每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

Spring学习笔记(八)-事务控制-基于AspectJ实现和与Web结合

Spring学习笔记(八)-事务控制-基于AspectJ实现和与Web结合

<!-- spring中基于XML的声明式事务控制配置步骤
            1、配置事务管理器
            2、配置事务的通知
                    此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的
                    使用tx:advice标签配置事务通知
                        属性:
                            id:给事务通知起一个唯一标识
                            transaction-manager:给事务通知提供一个事务管理器引用
            3、配置AOP中的通用切入点表达式
            4、建立事务通知和切入点表达式的对应关系
            5、配置事务的属性
                   是在事务的通知tx:advice标签的内部
    -->
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!-- 配置事务的通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <!-- 配置具体的业务方法的属性-->
    <tx:attributes>
        <!--name:业务方法的名称,1.具体的业务方法;2.带部分通配符;3.*-->
        <tx:method name="*" propagation="REQUIRED" read-only="false"/>
        <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
    </tx:attributes>
</tx:advice>

<!-- 配置aop-->
<aop:config>
    <!-- 配置切入点表达式-->
    <aop:pointcut id="pt1" expression="execution(* com.Xxx.service.impl.*.*(..))"/>
    <!--建立切入点表达式和事务通知的对应关系 -->
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/>
</aop:config>
Spring与Web
  • 在web项目中,Spring容器应只创建一次,并被所有Servlet共享

    • 解决方法:使用ServletContextListener,其存在两个方法分别在web项目启动和关闭时执行,且创建好的容器放置于web应用的ServletContext域中

    • ContextLoaderListener,由Spring提供的ServletContextListener实现类

    • 使用方法:

      • Maven配置

      • <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.1</version>
        </dependency>
        
      • web.xml配置

      • <!--上下文参数,用于给监听器提供参数,自定义配置文件的路径-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
        <!--创建容器时默认加载WEB-INF目录下的applicationContext.xml-->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
posted @ 2020-12-11 20:31  雨下整夜~  阅读(155)  评论(0)    收藏  举报