基于Spring AOP自定义注解
Spring AOP在Spring项目中有了很多自己的应用,例如@EnableAsync和@Async就是AOP的体现,那么我们如何自己在Spring AOP的原理下自定义自己的注解。
1. 基于Spring AOP自定义注解原理
Spring AOP基于 动态代理来实现,默认如果使用接口的,用JDK提供的动态代理实现,如果是类则使用CGLIB实现。通过@EnableAspectJAutoProxy开启AOP(同时开启对AspectJ的支持)。
- @EnableAspectJAutoProxy启动Spring AOP
- Spring AOP分为两种实现:
- 基于AspectJ注解
- 基于Spring AOP思想,也就是Advice 、 Pointcut 、 Advisor 这个三个,对应MethodInterceptor、AbstractBeanFactoryPointcutAdvisor、StaticMethodMatcherPointcut 三个类。
- 在Spring容器启动后生成对应的代理类,在执行方法的时候根据切面来执行对应的方法
2. 代码实战
将@Enable类型的注解与AOP拓展的接口相结合完成一个完整的功能。
2.1 定义@Enable注解
结合上一篇文章《如何自定义Spring Enable注解》的@EnableLog的功能