Spring AOP

2018-01-22  本文已影响0人  农民工__乔Young

一、起源

    OOP只能解决层次结构,各种散布在各处的无关的代码被称为横切(cross-cutting)代码,
在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用,于是诞生AOP。
    AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关
系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本
相似。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

二、基本概念

    1、join point(连接点):一个程序执行中的一个精确执行点
    2、Point cut(切入点) :捕获一个连接点的结构
    3、advice(通知):是point cut 的执行代码,是执行aspect的具体逻辑
    4、aspect(切面):point out + advice
    5、introduce(引入):为对象引入附加的方法和属性,从而达到修改对象结构的目的

推荐博客

三、Spring AOP 注解实现

1、Spring.XML文件配置
        <!-- 开启spring的注解 -->
        <context:annotation-config/>
        <!-- springIOC自动去扫描某个包下的javabean -->
        <context:component-scan base-package="com.wtu.spring.aop.annotation"/>
        
        <!-- 可以理解为让@Before @After...@Around  生效 -->
        <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
2、注解标记
@Aspect:一般使用在切面的类名上面,作用是指定该类为一个切面
编写切面类(把横切关注点的代码抽象到切面的类中):
一个一般的Java 类, 在其中添加要额外实现的功能,切面必须是 IOC 中的 bean
@PointCut: 配置在目标对象的方法上面,标识该方法是一个切入点
@Around @After @Before @After-returning @After-throwing : 
execution(* UserDaoImpl.a*(..)):就是要告诉该方法要在哪个类哪个方法前/后/异常执行

例子:

切面
切入点
@Before、@After、@Around参考
上一篇下一篇

猜你喜欢

热点阅读