此页内容

AOP

路白榆

293字小于1分钟

面向切面编程spring特性

2024-04-20

面向切面编程

相关术语:

切入点(PointCut):被标识为需要增强处理的连接点

连接点(JoinPoint):指程序运行中的一些时间点(如方法调用或异常抛出)

切面(Aspect):封装用于横向插入系统的功能(如事务、日志等)的类

通知/增强处理(Advice):指在切入点执行的增强处理代码,可以理解为切面类中的方法,是切面的具体实现


1.引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.编写切面类

/**
 * 切面类
 */
@Aspect
@Component
public class MyAspect {

    //切入点表达式
    @Pointcut("execution(void com.example.service.UserService.save())")
    public void pointcut() {
    }

    //环绕通知
    @Around("pointcut()")
    public Object strengthen(ProceedingJoinPoint joinPoint) throws Throwable {
        //输出当前系统时间
        System.out.println(LocalDateTime.now());
        //执行原始方法
        Object obj = joinPoint.proceed();
        //输出当前系统时间
        System.out.println(LocalDateTime.now());
        return obj;
    }
}

3.开启AOP功能支持

由于spring-boot-starter-aop依赖已经默认开启AOP支持,所以以下注解可加可不加

@SpringBootApplication
@EnableAspectJAutoProxy
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
贡献者: user