仅仅Autowired注解
@Autowired在查找构件时,会从构件库中查找所有构件,查找所有是被注解变量的类型或该类型的子类。
- 如果找到了且只找到了一个,那么就给被注解变量设置成此构件。
- 如果一个也没找到,看Autowired注解的required参数的值,如果是true(默认值)则失败,终止spring环境的启动;如果是false则给被注解变量赋值为null。
- 如果找到了多个:
- 如有在找到的多个中有且仅有一个构件被标注了@Primary,则使用这个。
- 如果@Primary有多个或者一个也没有,终止spring环境的启动,抛出异常。
Autowired注解和Qualifier注解一起使用
在使用@Autowired注解装载构件时,可以增加一个@Qualifier指定一个待装载构件的名字
1 | MyObject myObject; |
上面这种写法可以解决多个MyObject的子类被设置成component的状况
相应的,在构件上有两种写法:
1 |
|
也可以
1 |
|
注意给构件起名不要重复,重名会抛异常的。