前言
SpringBoot中自定义注解不生效情况分析及解决方案。
背景:因项目需要,通过自定义注解实现了一个令牌桶功能。在测试的时候,自定义注解加在Controller层的带RequestMapping注解的方法上,Service层中实现自接口的方法上,都能生效。一旦把注解加在普通方法上,注解就失效了。网上找了很多资料,有一种说法是包扫描的问题。我遇到的情况不是包扫描不到的问题。无意中看到一个讲Spring Aop实现机制的文章,提到了动态代理,参照文章修改项目,解决了问题。下面详细记录一下问题及处理问题的方法
一、Spring AOP的实现机制
基于spring aop实现的注解,在spring中,如果有aop实现,那么容器注入的是该类的代理类。spring aop的动态代理有两种:一种是jdk的动态代理,一种是基于CGLIB的,这两个的区别自己查资料。在这里我知道了aop是基于动态代理实现的。看下面的代码:
@Service
public class RateLimitServiceImpl implements RateLimitService {
@Autowired
RedisTemplate<St