Spring依赖注入

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());
		}
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值