aop 导致 @Value 获取不到配置文件数据的问题

最近遇到一个很头疼的问题,自己自定义了一个注解,然后在同一个类里面,加在了 a 方法上,结果导致另一个没有加注解的 b 方法莫名奇妙获取不到配置文件里面的数据了,a 和 b 方法没有任何联系,打了断点,也没有看到访问 b 方法进来了 aop ,而 a 方法一切都正常;去掉 a 方法的注解,b 就正常了,真的很懵逼,最后发现,竟然是 b 方法,使用了 private 修饰导致的,天坑,换成 public ,一切恢复正常。

注意:aop 不能用 private 修饰,会导致 spring 注入的对象失效,不单单是 @Value 引入的配置文件参数,基本使用  @Autowired ,@Service ,等注解引入的对象,也都会失效变成 null。

  1. 作用在了静态变量上;
  2. 作用在了常量上;
  3. 在除@Service/@RestController/@Component之外的非注册类上使用
  4. 使用这个类时用new的方式生成实例

以及上面这几种情况,也会导致失效

 

posted @ 2023-02-09 10:37  雪化山河  阅读(194)  评论(0编辑  收藏  举报