Spring的AOP简单理解

最近在研究spring的AOP,翻译出来的意思是面向切面。

总结如下: 
所谓AOP就是将分散在各个方法处的公共代码提取到一处,

并通过类似拦截器的机制实现代码的动态整合。可以简单地想象成,

在某个方法的调用前、执行中、调用后和抛出异常时,动态插入自己的代码。 

举个例子:A在执行银行操作,网XX行转了100到YY行,这其实是一个事务,如果中间一方发生问题,肯定会整体回滚,变为XX行不少100,YY行没多100的状态,这样才是正确的,可是在这整个事务中,我想知道中间的状态咋办,这时候就需要切面了,比如我想在XX行转了100时候就给一个单独的事务进行提交,记录XX行的状态,这时候就等于其实切开了一个事务。在一个事务中,提交另一个事务。

例子2:假如项目需要是这样的,需要你去记录用户在后台的每一个操作,难道你还去在增删查改的方法中,每个方法都去加入一个insert into 方法不成?那代码量可以说就是非常的惊人了,所以这里AOP就可以完美的代替了,只需要定义好切入点就可以在同一的地方进行管理。

以上便是个人对AOP的理解。

在spring.xml中配置

    <aop:config proxy-target-class="true">
        <!-- define the method that required transactionManager -->
        <aop:pointcut id="serviceMethods"
            expression="execution(public * jp..*.service..*.newTransaction*(..))" />
        <!-- define txAdvice -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
    </aop:config>

就能够对名为

newTransaction× 的方法名实现切面过程,在整个事务提交之前,率先提交。
原文地址:https://www.cnblogs.com/sunxun/p/6552726.html