今天在写一个自定义工具类的时候发现一个问题,就是@Component的使用中出现@Autowired为NULL,
按照redis 工具类写法是一样的按理说应该是可以用的,结果获取不到值。
这个主要问题是
在@Component注解的类下,再使用了@Resource或@Autowired注解。如此操作会导致依赖注入失败。
这是因为spring加载它们的顺序不同,在使用@Component注解将bean实例化到spring容器内的时候,因为@Autowired是在这个bean之中的,此时@Autowired还未完成自动装载,所以导致依赖注入的service为null
其中解决办法很多
比如:
添加一个set方法
把@Autowired注解放在方法上会在类加载后自动注入这个方法的参数,并执行一遍方法。