1、 使用构造器方法注入
2、 使用setter方法注入
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
案例1:使用构造器注入
新建一个PersonServiceBean.java
public class PersonServiceBean {
private String name;
private String sex;
private Integer age;
private Date birth;
public PersonServiceBean() {
super();
// TODO Auto-generated constructor stub
System.out.println("构造器初始化对象");
}
public PersonServiceBean(String name, String sex, Integer age, Date birth) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.birth = birth;
}
public void setName(String name) {
System.out.println("name的set方法------------"+name);
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Override
public String toString() {
return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="
+ age + ", birth=" + birth + "]";
}
}
新建一个bean.xml文件
<bean id="personServiceBean" class="cn.csdn.hr.service.PersonServiceBean">
<!--依赖注入的方式
构造器注入
构造器有四个参数,如果写三个参数会有错
且这四个参数的顺序必须正确
-->
<constructor-arg index="0">
<value>老王</value>
</constructor-arg>
<constructor-arg index="1">
<value>女</value>
</constructor-arg>
<constructor-arg index="2">
<value>23</value>
</constructor-arg>
<constructor-arg index="3">
<bean class="java.util.Date"></bean>
</constructor-arg>
</bean>
或者
<!-- 根据类型匹配,类型相同时再按顺序匹配 -->
<bean id="personServiceBean" class="cn.csdn.hr.service.PersonServiceBean">
<constructor-arg type="java.lang.String" value="小小"></constructor-arg>
<constructor-arg type="java.lang.String" value="女"></constructor-arg>
<constructor-arg type="java.lang.Integer" value="12"></constructor-arg>
<constructor-arg type="java.util.Date" ref="date"></constructor-arg>
</bean>
<bean id="date" class="java.util.Date"></bean>
测试方法:
@Test
public void test() {
//第一步:获取应用程序上下文对象
ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:benas.xml");
//第二步:根据应用程序上下文对象的getBean(id名称)方法获取实例bean对象
PersonServiceBean p=(PersonServiceBean) ac.getBean("personServiceBean");
System.out.println(p.toString());
}
案例2:使用setter方法注入
新建一个TeacherServiceBean.java
通过set注入必须有默认构造器,这个案例是集合的注入
private String name;
private String sex;
private Integer age;
private Date birth;
public PersonServiceBean() {
super();
System.out.println("构造器初始化对象");
}
public PersonServiceBean(String name, String sex, Integer age, Date birth) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.birth = birth;
}
public void setName(String name) {
System.out.println("name的set方法------------"+name);
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Override
public String toString() {
return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="
+ age + ", birth=" + birth + "]";
}
新建一个beanTeacher.xml文件
<bean id="teacherBean" class="cn.csdn.hr.service.TeacherBean">
<!-- list集合的注入 -->
<property name="list">
<list>
<value>惠普电脑</value>
<value>联想电脑</value>
<value>宏基电脑</value>
</list>
</property>
<!-- set集合的注入 -->
<property name="set">
<set>
<value>计算机技术与编程</value>
<value>c++</value>
<value>java</value>
</set>
</property>
<!-- map集合的注入 -->
<property name="map">
<map>
<entry>
<key>
<value>0x001</value>
</key>
<value>java编程与开发</value>
</entry>
<entry>
<key>
<value>0x002</value>
</key>
<value>jsp编程与开发</value>
</entry>
<entry>
<key>
<value>0x003</value>
</key>
<value>php编程与开发</value>
</entry>
</map>
</property>
<property name="prop">
<props>
<prop key="0x00001">海南</prop>
<prop key="0x00002">河南</prop>
<prop key="0x00003">河北</prop>
</props>
</property>
</bean>
测试方法
@Test
public void test1() {
//第一步:获取应用程序上下文对象
ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:beanTeacher.xml");
//第二步:根据应用程序上下文对象的getBean(id名称)方法获取实例bean对象
TeacherBean t=(TeacherBean) ac.getBean("teacherBean");
System.out.println("set注入list-----------------------------------------------------");
List<String> list=t.getList();
for(String str:list){
System.out.println(str);
}
System.out.println("set注入set-----------------------------------------------------");
Set<String> set=t.getSet();
for(String str:set){
System.out.println(str);
}
System.out.println("set注入map----------------------------------------------------");
Map<String,String> map=t.getMap();
Set<Entry<String,String>> en=map.entrySet();
for(Entry ent:en){ System.out.println(ent.getKey()+"===================="+ent.getValue());
}
System.out.println("set注入prop---------------------------------------------------");
Properties prop=t.getProp();
Set<Entry<Object, Object>> en1=prop.entrySet();
for(Entry ent:en1){
System.out.println(ent.getKey()+"===================="+ent.getValue());
}
}
Spring依赖注入
最新推荐文章于 2024-02-01 14:55:54 发布