AOP (Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能
的统一维护的一种技术。AOP是0OP的延续,是软件开发中的一个热点,也是Spring框架中的一一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
说人话就是:将核心代码与非核心代码进行分离,在核心代码中切入非核心代码
Aop在Spring中的作用提供声明式事务;允许用户自定义切面
- 横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等…
- 切面(ASPECT) :横切关注点被模块化的特殊对象。即,它是- -个类。
- 通知(Advice) :切面必须要完成的工作。即,它是类中的一一个方法。
- 目标(Target) :被通知对象。
- 代理(Proxy) :向目标对象应用通知之后创建的对象。
- 切入点(PointCut) :切面通知执行的“地点”的定义。
- 连接点JointPoint) :与切入点匹配的执行点。
【重点】使用AOP织入,需要导入一个依赖
方式一:原生Spring api接口org.aspectj aspectjweaver1.9.6
- 在这个方法中,首先要先定义一个切入点(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("方法执行前"); } }
其实方式三与方式二是大同小异的,方式三可以看成是利用注解的方式实现了方式二
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)