spring_Dependency injection

Dependency injection(依赖注入)

     DI exists in two major variants, Constructor-based dependency injection and Setter-based dependency injection.

案例分析:

  1、创建EmployeeBean类 代码如下:

package www.csdn.spring.constructor.bean;

public class EmployeeBean {

	private String name;
	private Double salary;
	private Dept dept;
	private String sex;

	// 构造器函数
	public EmployeeBean(String name, Double salary, Dept dept, String sex) {
		super();
		this.name = name;
		this.salary = salary;
		this.dept = dept;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept="
				+ dept + ", sex=" + sex + "]";
	}

}

2、创建Dept类 代码如下:

package www.csdn.spring.constructor.bean;

public class Dept {

	private String name;
	private String deptno;

	public void setName(String name) {
		this.name = name;
	}

	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}

	@Override
	public String toString() {
		return "Dept [name=" + name + ", deptno=" + deptno + "]";
	}

}

3、创建配置文件

<?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">

        <!-- 一、构造函数依赖注入(Constructor-based dependency injection) -->
	<!-- 1、通过构造函数注入 (Constructor argument resolution)-->
	<bean id="employeeBean1" class="www.csdn.spring.constructor.bean.EmployeeBean">
		<constructor-arg value="王晓而" />
		<constructor-arg value="100.0" />
		<constructor-arg ref="dept" />
		<constructor-arg value="男" />
	</bean>

	<!-- 2、根据构造器参数的类型(Constructor argument type matching) -->
	<bean id="employeeBean2" class="www.csdn.spring.constructor.bean.EmployeeBean">
		<constructor-arg type="java.lang.String" value="陈红均" />
		<constructor-arg type="java.lang.String" value="男" />
		<constructor-arg type="java.lang.Double" value="100.0" />
		<constructor-arg type="www.csdn.spring.constructor.bean.Dept"
			ref="dept" />
	</bean>

	<!-- 3、通过构造函数根据索引index注入(Constructor argument index) -->
	<bean id="employeeBean3" class="www.csdn.spring.constructor.bean.EmployeeBean">
		<constructor-arg index="0" value="陈红均" />
		<constructor-arg index="1" value="100.0" />
		<constructor-arg index="2" ref="dept" />
		<constructor-arg index="3" value="女" />
	</bean>
	<!-- 4、通过构造函数根据name注入(Constructor argument name) -->
	<bean id="employeeBean4" class="www.csdn.spring.constructor.bean.EmployeeBean">
		<constructor-arg name="name" value="陈红均" />
		<constructor-arg name="salary" value="100.0" />
		<constructor-arg name="dept" ref="dept" />
		<constructor-arg name="sex" value="男" />
	</bean>
	
        <!-- 二、Setter方法依赖注入(Setter-based dependency injection) -->
	<bean id="dept" class="www.csdn.spring.constructor.bean.Dept">
	    <!-- 根据setter注入 -->
		<property name="name" value="CSDN教育事业部" />
		<property name="deptno" value="0x0001" />
	</bean>

</beans>

4、创建测试代码:

	@Test
	public void testBean(){
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-null.xml");
		
		MemberBean bean = context.getBean("memberBean1", MemberBean.class);
		
		System.out.println(bean.name);
		System.out.println(bean.member);
		System.out.println(bean.email);
	}

5、自己运行观看结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值