Spring控制反转容器的使用例子

详细代码如下:

spring-config.xml

<?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 name="product" class="com.mstf.bean.Product"/>
    
    <!-- 通过参数名传递参数 -->
    <bean name="featuredProduct" class="com.mstf.bean.Product">
		<constructor-arg name="name" value="孝感"/>
        <constructor-arg name="description" value="简介"/>
		<constructor-arg name="price" value="9.95"/>
    </bean>
    
    <!-- 通过指数方式传递参数 -->
    <bean name="featuredProduct2" class="com.mstf.bean.Product">
        <constructor-arg index="0" value="孝感"/>
        <constructor-arg index="1" value="简介"/>
        <constructor-arg index="2" value="9.95"/>
    </bean>

    <bean id="calendar" class="java.util.Calendar" factory-method="getInstance"/>
    
    <!-- 通过构造器方式实例化 -->
    <bean name="employee1" class="com.mstf.bean.Employee">
        <property name="homeAddress" ref="simpleAddress"/>
        <property name="firstName" value="孝"/>
        <property name="lastName" value="感"/>
    </bean>

	<!-- 构造器方式依赖注入 -->
    <bean name="employee2" class="com.mstf.bean.Employee">
        <constructor-arg name="firstName" value="孝"/>
        <constructor-arg name="lastName" value="感"/>
        <constructor-arg name="homeAddress" ref="simpleAddress"/>
    </bean>
    
    <!-- 被依赖类(Employee依赖于Address类,以下配置是为了每个Employee实例都能包含Address实例) -->
    <bean name="simpleAddress" class="com.mstf.bean.Address">
        <constructor-arg name="line1" value="湖北省孝感市"/>
        <constructor-arg name="line2" value=""/>
        <constructor-arg name="city" value="孝感市"/>
        <constructor-arg name="state" value="China"/>
        <constructor-arg name="zipCode" value="99999"/>
        <constructor-arg name="country" value="CN"/>
    </bean>

</beans>

  Address

package com.mstf.bean;
/**
 * Address类和Employee类属于setter方式依赖注入
 * @author wangzheng
 *
 */
public class Address {
	private String line1;
	private String line2;
	private String city;
	private String state;
	private String zipCode;
	private String country;
	
	public Address(String line1, String line2, String city, String state, String zipCode, String country) {
		super();
		this.line1 = line1;
		this.line2 = line2;
		this.city = city;
		this.state = state;
		this.zipCode = zipCode;
		this.country = country;
	}

	@Override
	public String toString() {
		return "Address [line1=" + line1 + ", line2=" + line2 + ", city=" + city + ", state=" + state + ", zipCode="
				+ zipCode + ", country=" + country + "]";
	}

}

  Employee

package com.mstf.bean;
/**
 * Employee类和Address类属于setter方式依赖注入
 * @author wangzheng
 *
 */
public class Employee {
	private String firstName;
	private String lastName;
	private Address homeAddress;
	
	public Employee() {
		
	}

	public Employee(String firstName, String lastName, Address homeAddress) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
		this.homeAddress = homeAddress;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public Address getHomeAddress() {
		return homeAddress;
	}

	public void setHomeAddress(Address homeAddress) {
		this.homeAddress = homeAddress;
	}

	@Override
	public String toString() {
		return "Employee [firstName=" + firstName + ", lastName=" + lastName + ", homeAddress=" + homeAddress + "]";
	}

}

  Product

package com.mstf.bean;

import java.io.Serializable;
/**
 * 带参数的构造器来初始化类
 * @author wangzheng
 *
 */
public class Product implements Serializable { // product类

	private static final long serialVersionUID = 1L;
	
	private String name;
	private String descripition;
	private float price;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescripition() {
		return descripition;
	}
	public void setDescripition(String descripition) {
		this.descripition = descripition;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	
	public Product() {
		
	}
	
	public Product(String name, String descripition, float price) {
		super();
		this.name = name;
		this.descripition = descripition;
		this.price = price;
	}

}

  

posted @ 2017-03-21 10:58  雨落秋垣  阅读(470)  评论(0编辑  收藏  举报