AOP实现方式

AOP实现方式,第1张

AOP实现方式 AOP

AOP (Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能
的统一维护的一种技术。AOP是0OP的延续,是软件开发中的一个热点,也是Spring框架中的一一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

说人话就是:将核心代码与非核心代码进行分离,在核心代码中切入非核心代码

Aop在Spring中的作用

提供声明式事务;允许用户自定义切面

  • 横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等…
  • 切面(ASPECT) :横切关注点被模块化的特殊对象。即,它是- -个类。
  • 通知(Advice) :切面必须要完成的工作。即,它是类中的一一个方法。
  • 目标(Target) :被通知对象。
  • 代理(Proxy) :向目标对象应用通知之后创建的对象。
  • 切入点(PointCut) :切面通知执行的“地点”的定义。
  • 连接点JointPoint) :与切入点匹配的执行点。
使用Spring实现Aop

【重点】使用AOP织入,需要导入一个依赖

        
            org.aspectj
            aspectjweaver
            1.9.6
        
方式一:原生Spring api接口

  • 在这个方法中,首先要先定义一个切入点(pointcut),切入点的意思就是,比如说这个例子是在运行增删改查的时候在运行前后都打印出 “执行了什么什么” 这个切入点就是将要增加的提示插入到这个类之中
  • 之后执行环绕增加,将注册在spring中的类通过引入的方法与切入点相连

    
    
    

    
    
    
        
        

        
        
        
    
方式二:自定义切入点
public class DiyPoinyCut {

    public void before(){
        System.out.println("========方法执行前=======");
    }
    public void after(){
        System.out.println("========方法执行后=======");
    }

}

在程序中直接创建一个DiyPoinyCut类,在这个类中定义两个方法,这个就相当于方法一中log包下的两个类

    
    
        
        
            
            
            
            
            
        
    

方法一与方法二最大的不同就是方法二中是先自定义切面,然后通过ref将切面类引入过来,直接将类中的方法进行切入

方式三:注解实现切入
//方式三:使用注解方式实现AOP

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect//标注这个类为一个切面
public class AnnotationPointCut {

    @Before("execution(* com.shi.service.UserServiceImpl.*(..))")
    public void before(){
        System.out.println("方法执行前");
    }
}
    
    
    

其实方式三与方式二是大同小异的,方式三可以看成是利用注解的方式实现了方式二

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5573375.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存