zoukankan      html  css  js  c++  java
  • spring aop学习记录

    许多AOP框架,比较常用的是Spring AOP 与AspectJ。这里主要学习的Spring AOP。

    关于AOP

    日志、事务、安全验证这些通用的、散步在系统各处的需要在实现业务逻辑时关注的事情称为“方面”,也可称为 关注点
    AOP要做的事,就是从系统中分离出 方面 ,然后集中实现。从而独立地编写业务代码和方面代码,在系统运行时,再将方面“织入”到系统中。
    这样好处是:
    1、减少方面代码里的错误,处理策略改变时还能做到统一修改;
    2、在编写业务逻辑时可以专心于核心业务;
     
    AOP重要概念
     
    切面:方面(日志、事务)的实现,如日志切面、权限切面等。通常是存放方面实现的普通java类,要被aop容器识别为切面,需要在配置中通过bean来标记指定。
    通知:切面的具体实现。以目标方法为参照点。根据位置不同,可分前置、后置、异常、环绕、最终通知5种。切面类中的某个方法具体属于哪类通知,需要在配置中指定。
    切入点:用于定义通知应该织入到哪些连接点上。
    目标对象:将要织入切面的对象,即被通知的对象。这些对象只包含核心业务逻辑业务代码,所有日志、事务、安全验证等方面的功能等待AOP容器的织入。
    代理对象:将通知应用到目标对象之后,被动态创建的对象。功能=目标对象中实现的核心业务逻辑功能+方面(日志、事务、安全验证)代码实现的功能。
    织入:将切面应用到目标对象,从而创建一个新的代理对象的过程。
     

     spring aop日志实现有基于代理类、基于schema、基于@AspectJ注解三种方式。其中前两类项目中配置文件比较复杂,注解方式配置比较简洁。

    参考:Spring AOP 完成日志记录

     配置文件中关于切入点的一个定义示例:

        <!-- 以AspectJ方式 定义 AOP -->
        <aop:config proxy-target-class="true">
            <aop:advisor pointcut="execution(public * cn.com.bs..*work..*Work*.*(..))" 
                advice-ref="txAdviceWork" />
        </aop:config>

     看看Spring官方文档的定义(正则匹配原则 如何区分包名、类名、方法名):

  • 相关阅读:
    RecycleView使用心得【2】
    URL解析
    CSS 动画总结
    包含块 width 和 height 值的总结
    JS 获取页面大小
    常见跨域方法原理及其用例
    CSS 计数器
    JS 对象总结
    JS 原型以及原型链
    关于未能找到源文件“.NETFramework,Version=v4.0.AssemblyAttributes.cs”问题
  • 原文地址:https://www.cnblogs.com/kongzhongqijing/p/5872692.html
Copyright © 2011-2022 走看看