为什么不用注解配置事务,是因为这样可以统一管理,具体哪些方法满足什么样的方法名就能操作事务
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:advice id="txadvice"> <tx:attributes> <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="java.lang.Exception"/> <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="java.lang.Exception"/> <tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="java.lang.Exception"/> <tx:method name="find*" read-only="true"/> <tx:method name="get*" read-only="true"/> </tx:attributes> </tx:advice>
<!-- <aop:aspect>
<aop:pointcut expression="execution(* yycg.*.service.impl)" id="aopoint" />
</aop:aspect> --> 这样配置错屋
切入 <aop:config> <aop:pointcut expression="execution(* yycg.*.service.impl)" id="aopoint" /> //这里可以去掉,如果下面 pointcut="execution(* yycg.*.service.impl.*.*(..))",不是pointcut-ref <aop:advisor advice-ref="txadvice" pointcut-ref="aopoint"/> </aop:config> </beans>
应该这么配置,
但是aop:config中还有aop:aspect,怎么这么眼熟;
原来在aspectj中是这么配置的,确实如果配置aop:aspect,里面就没有aop:advisor,这一项,而是具体的环绕通知,前置通知等等,事务通知和它们不一样,是有规则的,就是上面需要指定方法,传播行为,等等