Spring AOP+事务控制

  applicationContext.xml配置文件

<!-- 开启AOP监听 只对当前配置文件有效 -->
<aop:aspectj-autoproxy expose-proxy="true"/>

<!--事务管理器配置-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
  </bean>
  
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
          <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
          <tx:method name="query*" propagation="REQUIRED" read-only="true" />
          <tx:method name="count*" propagation="REQUIRED" read-only="true"/>
          <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
          <tx:method name="list*" propagation="REQUIRED" read-only="true"/>
          <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<aop:config expose-proxy="true" proxy-target-class="true">
   <!-- 只对业务逻辑层实施事务 -->
   <aop:pointcut id="txPointcut" expression="execution(* com.tcl.mie.usercare..service..*+.*(..)) or execution(* com.tcl.mie.usercare..task..*+.*(..))"/>
   <aop:advisor id="txAdvisor" advice-ref="txAdvice" pointcut-ref="txPointcut"/>
 </aop:config>

  expression配置详情:

  execution(modifiers-pattern?ret-type-pattern   declaring-type-pattern?name-pattern(parm-pattern)  throws-pattern)

  • modifiers-pattern:方法的操作权

  • ret-type-pattern:返回值

  • declaring-type-pattern:方法所在的包

  • name-pattern:方法名

  • parm-pattern:参数名

  • throws-pattern:异常

  示例:项目可以按照这个方式来更改

  expression="execution(*  pp.business.*.*(..)) or execution(*  pp.business.impl.*.*(..))"


你可能感兴趣的:(Spring AOP+事务控制)