SpringBoot项目中使用@Component下使用@Autowired注入属性为空的问题
-
问题描述:
我自己定义了一个工具类,在工具类上加上了@Component注解将其注入到Spring容器中,然后在这个工具类中添加了@Autowired注入了一个HttpSession,但是在我使用这个工具类的时候,却发现注入的HttpSession是null
-
代码如下:
可以看到,使用@Autowired注入的UserService是空的,但是HttpSession是有值的
**解决方案:**将@Autowired放到set方法上,并将属性设为静态,由于spring会一定会加载加了@Autowired注解色set方法,所以就可以获得所需要的对象,设置为静态方法,这样下次使用这个对象的时候就可以直接取到所要的bean了
-
问题原因:
这是spring加载顺序的问题,使用@Component将bean注入到spring容器中的时候,由于@Autowired是在@Component内的,还并未完成自动装配,所以导致注入的为空
**注意:**首先需要确保你加@Component的类被spring扫描到