SpringBoot的Aop应用(超简单)

这是一篇基于SpringBoot非常简单的Aop应用。

首先我们在配置Aop时先了解一下SpirngBoot 2.0前后的新特性。

1.Spring Boot 2.0 之前的动态代理,有接口,就使用jdk动态代理,没接口,就使用cglib动态代理

2.从 Spring Boot 2.0 开始,动态代理统一使用cglib,无论被代理的对象有没有接口


到这里我们先来看看准备工作。

aop应用,我们只需要添加这样一个spring-boot-starter-aop依赖。

这是我的包结构。

首先编写的是service层的MyService接口。

 很简单,就这样一个东西。

其次是MyServiceImpl实现类。

 接着编写controller接口,这里返回字符串,因此要用@RestController注解

 从spring容器中取出myService,在控制台中打印结果,

最后自定义一个简单的aop,只需要添加下面三个注解即可

@Component
@EnableAspectJAutoProxy
@Aspect
public class LosAspect{
    @Pointcut("execution(* com.qf.hjp.aop.service.*.*(..))")
    public void pointcut(){

    }
    @Before("pointcut()")
    public void before(JoinPoint jp){
        String name = jp.getSignature().getName();
        System.out.println(name + " 方法开始执行了...");
    }
}

测试:

 为什么会使JDK动态代理呢,难道小编用的是SpringBoot老版本吗,不是的,是因为我在application.properties中配置了一个东西,

 把这个东西注释掉或者改为true,测试结果便是cglib动态代理

 


版权声明:本文为Jumpingyyds原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。