基于注解的自动装配之@Autowired的原理及注意事项
1. @Autowired的原理
首先根据所需要的组件类型到IOC容器中查找
-
能够找到唯一的bean:直接执行装配
-
如果完全找不到匹配这个类型的bean:装配失败
-
和所需类型匹配的bean不止一个
-
没有@Qualifier注解:根据@Autowired标记位置成员变量的变量名作为bean的id进行匹配
-
能够找到:执行装配
-
找不到:装配失败
-
-
使用@Qualifier注解:根据@Qualifier注解中指定的名称作为bean的id进行匹配
-
能够找到:执行装配
-
找不到:装配失败
-
-
2.注意事项
- @Autowired中有属性required,默认值为true,要求必须完成自动装配,因此在自动装配无法找到相应的bean时,会装配失败,此时会抛出异常:NoSuchBeanDefinitionException
- 可以将属性required的值设置为false,此时能装配就装配,无法装配则使用属性的默认值
- 但是实际开发时,基本上所有需要装配组件的地方都是必须装配的,用不上这个属性。