依赖注入
1、构造器注入
IOC创建对象方式的时候已经说过
2、set方式注入【重】
-
依赖注入:其本质就是set注入!
- 依赖:bean对象的创建依赖于容器。
- 注入:bean对象中的所有属性可以由容器注入。
【复杂环境】
类型:
String | 复杂类型 | String[ ] | List< > | Map< , > | Set< > | Properties
eg如下Java类:
public class Student { private String name; private Address address; private String[] books; private List<String> hobbies; private Map<String,String> card; private Set<String> game; private String wife; private Properties info; //get和set方法省略 }
public class Address { private String address; }
3、拓展方式注入
3.1、p命名空间
<!-- p命名空间注入 -->
<bean id="user" class="com.fan.di.User" p:name="fan" p:age="10"/>
3.2、c命名空间
<!-- c命名空间注入 -->
<bean id="user2" class="com.fan.di.User" c:name="xiaofan" c:age="18"/>
注意:在使用两种命名空间进行值注入时需要导入约束:
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
其次:
在使用p命名空间时,所注入bean对应的class类中必须包含无参构造函数。
而在使用c命名空间时,所注入的bean对应的class类中必须包含有参构造函数。