依赖注入
-
依赖注入:(Dependency Injection,DI)。
-
依赖:指Bean对象的创建依赖于容器,Bean对象的依赖资源
-
注入:指Bean对象所依赖的资源,由容器来设置和装配
-
构造器注入
-
set注入
-
扩展的注入
- 常量注入
- Bean注入
- 数组注入
- list注入
- map注入
- set注入
- Null注入
- Properties注入
- p命令和c命令注入
Bean的自动装配
-
byName
autowire byName(按名称自动装配)- 当一个bean节点带有 autowire byName的属性时。
-
将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写字符串,即cat。
-
去spring容器中寻找是否有此字符串名称id的对象。
-
如果有,就取出注入;如果没有,就报空指针异常。
-
- 当一个bean节点带有 autowire byName的属性时。
-
ByType
- 使用autowire byType首先需要保证:同一类型的对象,在spring容器中唯一。如果不唯一,会报不唯一的异常。
-
使用注解
-
@Autowired
- @Autowired是按类型自动转配的,不支持id匹配。
- 需要导入 spring-aop的包!
- @Autowired(required=false) 说明:false,对象可以为null;true,对象必须存对象,不能为null。
-
@Qualifier
- @Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配
- @Qualifier不能单独使用。
-
@Resource
- @Resource如有指定的name属性,先按该属性进行byName方式查找装配;
- 其次再进行默认的byName方式进行装配;
- 如果以上都不成功,则按byType的方式自动装配。
- 都不成功,则报异常
-