我以前ssh的整合是spring在管理struts的时候,struts里面只是存放的一个Spring的代理;spring读取的时候是通过sessionConfiguration直接读取hibernate.cfg.xml文件创建sessionFactory工厂的。在配置transactionmanager事务管理器,以及事务的传播特性。就好像完了,这里SSH整合使用纯注解配置,没有了hibernate.cfg.xml文件,spring直接加载dataSourse数据源,还有我在网上查了一下transactionTemplate属于编程式事务,我们既然已经配置了声明式事务,那么为什么还要配置编程式事务?
下面的配置既然已经完整的定义了一个AspectJ(切面),为什么还要定义<tx:annotation-driven />和
<context:component-scan base-package="com.woyo" />这2个配置?我查了一下,说第一个是支持注解配置,第二个是支持自动扫描com.woyo包下及子包下的类,那样的话在下面配置了<aop:advisor pointcut="execution(* com.woyo.abcp.service..*Service.*(..))" advice-ref="txAdvice" />说是扫描Service包下的所有的类和方法,是否可以不配置,是不是我们这个项目里面配置了两套?百思不得其解
<aop:aspectj-autoproxy />
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.woyo.abcp.service..*Service.*(..))" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="add*"    propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="create*"    propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="batch*"  propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>