Spring依赖对象的构造函数注入实例

  1. 依赖对象的构造方法注入
如果各类之间存在HAS-A关系, 则首先创建依赖对象(包含对象)的实例, 然后将其作为主类构造函数的参数传递。在这里, 我们的方案是员工HAS-A地址。 Address类对象将称为从属对象。让我们首先看一下Address类:
Address.java
此类包含三个属性, 一个构造函数和toString()方法以返回这些对象的值。
package com.srcmini; public class Address { private String city; private String state; private String country; public Address(String city, String state, String country) { super(); this.city = city; this.state = state; this.country = country; }public String toString(){ return city+" "+state+" "+country; } }

Employee.java
它包含三个属性id, name和address(从属对象), 两个构造函数和show()方法, 以显示当前对象(包括依赖对象)的记录。
package com.srcmini; public class Employee { private int id; private String name; private Address address; //Aggregationpublic Employee() {System.out.println("def cons"); }public Employee(int id, String name, Address address) { super(); this.id = id; this.name = name; this.address = address; }void show(){ System.out.println(id+" "+name); System.out.println(address.toString()); }}

applicationContext.xml
ref属性用于定义另一个对象的引用, 以这种方式我们将依赖对象作为构造函数参数传递。
< ?xml version="1.0" encoding="UTF-8"?> < beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> < bean id="a1" class="com.srcmini.Address"> < constructor-arg value="http://www.srcmini.com/ghaziabad"> < /constructor-arg> < constructor-arg value="http://www.srcmini.com/UP"> < /constructor-arg> < constructor-arg value="http://www.srcmini.com/India"> < /constructor-arg> < /bean> < bean id="e" class="com.srcmini.Employee"> < constructor-arg value="http://www.srcmini.com/12" type="int"> < /constructor-arg> < constructor-arg value="http://www.srcmini.com/Sonoo"> < /constructor-arg> < constructor-arg> < ref bean="a1"/> < /constructor-arg> < /bean> < /beans>

Test.java
此类从applicationContext.xml文件获取Bean并调用show方法。
package com.srcmini; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.*; public class Test { public static void main(String[] args) {Resource r=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(r); Employee s=(Employee)factory.getBean("e"); s.show(); } }

下载此示例(使用MyEclipse IDE开发)
【Spring依赖对象的构造函数注入实例】下载此示例(使用Eclipse IDE开发)

    推荐阅读