依赖的意思:就是bean的创建依赖于Spring容器。
注入的意思:bean的属性由容器注入。
实例
步骤
- 创建一个maven项目
- 配置xml文件
- 创建pojo(Student)类
- 进行依赖注入
- 进行测试
依赖注入的方式
- 构造器注入
- Set注入
- 扩展方式注入
这里主要讲 S e t Set Set注入。
需要给对应的属性定义 S e t Set Set方法,然后通过 x m l xml xml的 b e a n bean bean的 p r o p e r t y property property实现属性的注入。
学生类
public class Student {
//属性
private Address address;
private String name;
private String[] books;
private List<String> hobbys;
private Map<String,String> card;
private Set<String> game;
private String pointer;
private Properties info;
/*
这一部分是Set 方法的定义
....
....
*/
}
引用对象作为属性(Address)类
package com.harris.pojo;
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Address{" +
"address='" + address + '\'' +
'}';
}
}
重点来了,xml中的Set注入。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="address" class="com.harris.pojo.Address"/>
<bean id="student" class="com.harris.pojo.Student">
<!-- bean 的 value 注入-->
<property name="name" value="小明"/>
<!-- bean 的 ref 注入-->
<property name="address" ref="address"/>
<!-- 数组的注入-->
<property name="books">
<array> <!--使用array标签注入 -->
<value>编程之美</value>
<value>数据结构</value>
<value>红与黑</value>
<value>边城</value>
</array>
</property>
<property name="card">
<map> <!--使用map标签注入 entry(实例) -->
<entry key="身份证" value="21321452412"/>
<entry key="银行卡" value="112313123"/>
</map>
</property>
<property name="game">
<set> <!--使用set标签注入 -->
<value>WOW</value>
<value>LOL</value>
<value>CF</value>
</set>
</property>
<property name="hobbys">
<list> <!--使用list标签注入 -->
<value>唱歌</value>
<value>睡觉</value>
<value>打游戏</value>
</list>
</property>
<property name="info">
<props>
<!--使用props标签注入 配置文件 -->
<prop key="姓名">小明</prop>
<prop key="性别">男</prop>
<prop key="年龄">18</prop>
</props>
</property>
<property name="pointer">
<!-- 附上空的注入 -->
<null></null>
</property>
</bean>
</beans>
测试类(MyTest类)
import com.harris.pojo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student) context.getBean("student");
//使用toString() 方法打印
System.out.println(student.toString());
}
}