一.AOP是什么
AOP - Aspect Oriented Programing,面向切面编程。将封装好的对象切开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”,切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
比如:将一大块包含复制业务逻辑的代码,通过横向抽取的方式抽取到一个个独立的模块中,比如拆分为业务逻辑、性能监控以及事务处理。
Spring AOP在运行期间通过代理方式向目标类织入增强代码。
二.AOP在项目中的使用
在Spring项目中配置的事务管理器,就使用到了Spring AOP。
<aop:config>
<aop:pointcut id="bussinessService" expression="execution(public * com.honglin.service..*.*(..))" />
<aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="find*" read-only="true" />
<tx:method name="add*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
参考资料:spring AOP在实际项目中的应用