Spring横切面(advice)、增强(advisor)、切入点(pointcut)小结

下面是转载的一篇对Spring横切面(advice)、增强(advisor)、切入点(pointcut)小结的文章,修改了一下,其中以Hibernate作为持久层框架:

HibernateTransactionManager事务管理:

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>

这样当定义切面时可以注入会话工厂属性如下:

<!-- 配置事务处理的Bean,定义切面(advice) -->
<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true"/>
        <tx:method name="query*" read-only="true"/>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
    </tx:attributes>
</tx:advice>

配置AOP:

<!-- 配置AOP -->
<aop:config>
    <aop:pointcut id="daoMethod" expression="execution(public * com.dvp.module.*.*.*.dao.impl..*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethod"/>
</aop:config>

<aop:config>
    <aop:pointcut id="daoMethod2" expression="execution(public * com.dvp.base.dao.impl..*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethod2"/>
</aop:config>

所以,一个Spring增强(advisor) = 切面(advice) + 切入点(pointcut)。

参考资料:

1. Spring横切面(advice),增强(advisor),切入点(PointCut)

本文标题:Spring横切面(advice)、增强(advisor)、切入点(pointcut)小结

本文链接:http://yedward.net/?id=340

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章