3.1构造器注入
3.2Set方式注入【重点】
- 依赖:bean对象的创建依赖于容器
- 注入:bean对象中的所有属性,由容器来注入
- 实体类
//实体类Student,通过Spring容器的配置文件对其进行配置
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbies;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
- XML配置
<?xml version="1.0" encoding="UTF-8"?>
<beans
<!--到现在,我们要实现不同的操作,就彻底不用在程序中改动,只需要在该xml文件中进行修改
所谓IoC,一句话:对象由Spring来创建、管理、装配-->
<bean id="address" class="com.dong.pojo.Address">
<property name="address" value="成都市犀浦镇"/>
</bean>
<bean id="student" class="com.dong.pojo.Student">
<!--第一种注入,普通的值注入 value-->
<property name="name" value="Tom"/>
<!--第二种注入,bean注入 ref-->
<property name="address" ref="address"/>
<!--第三种注入,数组注入-->
<property name="books">
<array>
<value>红楼梦</value>
<value>西游记</value>
<value>三国演义</value>
<value>水浒传</value>
</array>
</property>
<!--第四种注入,List注入-->
<property name="hobbies">
<list>
<value>跑步</value>
<value>游泳</value>
</list>
</property>
<!--第五种注入,Map-->
<property name="card">
<map>
<entry key="身份证" value="1111111111111"/>
<entry key="银行卡" value="2021211018000"/>
</map>
</property>
<!--第六种注入,Set-->
<property name="games">
<set>
<value>LOL</value>
<value>BOB</value>
</set>
</property>
<!--第七种注入,null-->
<property name="wife">
<null/>
</property>
<!--第八种注入,prop-->
<property name="info">
<props>
<prop key="driver">2021211018</prop>
<prop key="url">http://www.baidu.com</prop>
<prop key="username">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>
</beans>
- 测试类
//测试
public class MyTest {
public static void main(String[] args) {
//获取Spring的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//我们的对象都在Spring容器中进行管理,现在我们需要使用某个对象就去Spring容器中get
Student student = (Student)context.getBean("student");
System.out.println(student);
}
}
- 输出
对应的输出
Student{
name='Tom',
address=Address{
address='成都市犀浦镇'},
books=[红楼梦, 西游记, 三国演义, 水浒传],
hobbies=[跑步, 游泳],
card={
身份证=1111111111111,
银行卡=2021211018000},
games=[LOL, BOB],
wife='null',
info={
password=root,
url=http://www.baidu.com,
driver=2021211018,
username=root}
}
3.3拓展方式注入
可以使用p命名空间和c命名空间进行注入
注意点:不能直接使用,必须要导入相关的XML约束(xmlns:...