大白话AOP的一些相关概念

2020-02-19  本文已影响0人  不过意局bugyj

AOP原理

参考:Spring AOP概念理解 (通俗易懂)

面向切面编程,即将重复性的逻辑代码横切出来,封装称单独的类,以实现代码重用、非核心代码(如日志,性能等)和核心代码分离的作用。

横切出来的类就为切面(Aspect),一个切面包含三个内容才能发挥作用:在哪(切入点 pointcut),什么时候干什么(合为 通知Advice,其中包括方法表明干什么,注解表明什么时候(joinPoint连接点))。

而目标(Target)指的就是切入点所在类,给其方法添加切面这个动作即织入(weaving)。AOP的原理是动态代理,生成的代理类简称为代理(Proxy)。

示例代码:

@Component
@Aspect
public class ExampleAspect {

    // 切入点
    @Pointcut("execution(* com.example.Example.*(..)) || " +
        "...")
    public void exampleService(){}

    // 通知
    @Around("exampleService()")
    public ResponseEntity log(ProceedingJoinPoint joinPoint) {
        ...
    }
}

这里我们已经对于Example类的所有方法织入了log方法,ExampleAspect作为目标类将会由JDK生成动态代理类,这可以避免我们手动定义很多代理类,而重用这个切面。

上一篇下一篇

猜你喜欢

热点阅读