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× 的方法名实现切面过程,在整个事务提交之前,率先提交。
  • 相关阅读:
    how to .bson file into mongodb
    celery 源生框架项目
    @property装饰器将getter方法变成了属性
    类继承实现--停车场可用车位
    vue 基于 webpack 中使用 ECharts
    windows10 docker 从C盘迁移到其他盘
    python 布隆过滤器的下载使用
    深入系统同步锁机制 GIL
    男神鹏:ubantu 18.0.4 安装go 1.10.4 和环境变量的配置以及卸载
    男神鹏:命令 'ls' 可在 '/bin/ls' 处找到
  • 原文地址:https://www.cnblogs.com/sunxun/p/6552726.html
Copyright © 2011-2022 走看看