下面是一段在applicationContext.xml文件里面关于事务管理的配置文件
<!-- 实施事务管理的bean -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--给事务添加的属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes >
<!--propagation表示的是事务的传播特性,使用required时,是当检测到add开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务。然后将方法放进去。 -->
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delet*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<!--如果检测到其它的方法,则给其只读数据库的属性。即当本方法在读时,其它的方法不能再去写了。保证一个事务的完整性。 -->
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* org.ethip.catalog.service.*.*(..))"/>
<!-- 调用上面配置的事务属性,可以将它给本aop pointcut。 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
<!-- 如果还有其它的定义,则可以再加上pointcut、advisor来定义本切面点的事务逻辑。 -->
</aop:config>
spring使用advisor来代表方面的对象,他包含一个通知和一个特定连接点的切入点
但是aop:advisor 没有id,我不知道工程是怎么调用它进行事务管理的 。
哪位帮忙解释一下,谢谢!
网上说advisor通过Spring framework提供的一个RegexMethodPointcutAdvisor类来实现