@Autowired是spring提供的注解,可以对成员变量、方法和构造函数进行标注。
使用@Autowirted自动配置时,Spring IOC容器会自动装配一个AutowiredAnnotationBeanPostProcesspr后置处理器,这样,当Spring容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。
在使用@Autowrited查找时,默认是按byType(按类型匹配),此时:
- 只有一个对应类型的bean,那么就将该bean装配给指定数据;
- 如果有两个或多个,那么@Autowrited就会使用名字进行装配;
- 如果没有找到对应类型的bean,此时程序会抛异常。
解决办法:
@Autowired(required = false)