SpringBoot:为什么有时候可以用@Autowired或者@Resource进行注入,有时候就要用构造方法那?@Autowired和@Resource又有什么区别那
首先我们要先了解为什么使用了@Autowired
或者@Resource
注解后,我们就不用进行new XX()
这样的动作,就可以调用XX
中的方法了。
原理就是Spring中IOC和DI帮我们做了这样的动作,IOC和DI是什么,可以看我上篇文章。
那为什么有时候@Autowired
或者@Resource
注解,又不能用了那,需要用构造方法那?
因为这个类没有被Spring进行管理,也就是这个类没有像是@Controller、@Componet
等这样的注解将这个类纳入Spring进行管理,如果一个类没有被Spring进行管理,那这个类就无法使用Spring提供的功能了。
- @Autowired:使用在字段上,根据字段类型进行依赖注入。可以配合
@Qualifier
一起使用,根据名称进行依赖注入。 - @Resource:使用在字段上,根据名称进行注入。如果名称没找到,再根据类型注入。