zoukankan      html  css  js  c++  java
  • 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× 的方法名实现切面过程,在整个事务提交之前,率先提交。
  • 相关阅读:
    maven项目中各文件都没有报错,但是项目名称有红叉
    executeFind()方法和execute()方法区别
    数据库查询
    getHibernateTemplate出现的所有find方法的总结
    HQL和SQL的区别
    Java创建对象的方式
    xml中的<![CDATA[]]>和转义字符
    DWRUtil.addOptions
    dwr
    response.setHeader("Cache-Control","no-cache");的作用
  • 原文地址:https://www.cnblogs.com/sunxun/p/6552726.html
Copyright © 2011-2022 走看看