前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day35_Spring学习回顾_03

day35_Spring学习回顾_03

作者头像
黑泽君
发布2018-10-11 10:33:42
2010
发布2018-10-11 10:33:42
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏
代码语言:javascript
复制
1.1、事务管理
    基于xml配置的
        1.配置事务管理器
            jdbc:DataSourceTransactionManager
            hibernate:HibernateTransactionManager
            
            <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <property name="dataSource" ref="dataSource"></property>
            </bean>
            
        2.事务通知(详情、属性)
            <tx:advice id="txAdvice" transaction-manager="txManager">
              <tx:attributes>
                 <tx:method name="add*"/>
                 <tx:method name="update*"/>
                 <tx:method name="delete*">
                 <tx:method name="find*" read-only="true"/>
                </tx:attributes>
            </tx:advice>

        3. AOP编程,ABCD --> ABC
            <aop:config>
              <aop:advisor advice-ref="txAdvice" pointcut="execution(* com..*.*(..))">
            </aop:config>   
    
    基于注解的
        xml 配置
        1.配置事务管理器
            <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <property name="dataSource" ref="dataSource"></property>
            </bean>
        2.将配置事务管理器交予spring管理
            <tx:annotation-driven transaction-manager="txManager" proxy-target-class="false"/>
        3.目标类上通过注解配置事务详情
            @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT)

1.2、整合Junit
    在测试类上
        // 让Junit去通知spring加载配置文件
        @RunWith(SpringJUnit4ClassRunner.class)
        @ContextConfiguration(locations="classpath:applicationContext.xml")

        // 让spring容器自动进行注入
        @Autowired

        @Test

1.3、整合web
    web.xml 中的配置
        1.确定xml位置
            <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </context-param>
        2.配置spring 监听器,用于加载xml配置文件
            <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
            </listener>

1.4、整合ssh
    1.hibernate po(domain/bean)
    2.dao 层:
        法一:需要HibernateTemplate,相当于session操作PO类 --> 必须提供setter方法,让spring进行注入 --> 所以xml中必须要配置模板
            save()    update()    delete()    saveOrUpdate()    find() 
        法二:继承HibernateDaoSupport,需要注入SessionFactory,底层自动创建模板
            dao方法中使用 this.getHibernateTemplate()
            
    3.service 层:spring配置
        <!-- 加载配置文件 JdbcInfo.properties
            "classpath:" 该前缀表示在src目录下
            在配置文件中通过  ${key} 获得配置文件 内容(值)
        -->
        <context:property-placeholder location="classpath:com/itheima/f_properties/jdbcInfo.properties"/>

        <!-- 创建数据源对象,c3p0,需要注入基本四项 -->
        <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"></property>
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
            <property name="user" value="${jdbc.user}"></property>
            <property name="password"  value="${jdbc.password}"></property>
        </bean>
        
        <!-- 配置 LocalSessionFactoryBean,获得SessionFactory -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <prop key="hibernate.current_session_context_class">thread</prop>
                </props>
            </property>
            <property name="mappingLocations" value="classpath:com/itheima/domain/*.hbm.xml"></property>
        </bean>
        
        <!-- dao spring中删除模板,给dao注入SessionFactory -->
        <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        
        <!-- 事务管理 HibernateTransactionManager,需要注入 SessionFactory -->
        <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!-- 5.2 、事务详情 ,给ABC进行具体的事务设置 -->
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="register"/>
            </tx:attributes>
        </tx:advice>
        <!-- 5.3、AOP编程,从 ABCD 业务中 筛选出 ABC -->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.service..*.*(..))"/>
        </aop:config>  
        
    4.web 层:aciton
        使用的是:由struts去创建action
        struts.xml 中的 <action name="" class="全限定类名"> 注意:我们看到的好像是struts去创建action,其实底层使用的是spring去创建action
        在Action类中,必须提供service名称与spring配置文件一致。(如果【名称】一致,将自动注入) 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档