Spring学習シリーズのBeanFactory入門(1)

4462 ワード

プロフィール:
SpringのBenFactoryインターフェースはSpringフレームの最も核心的なインターフェースであり、指定されたXMLファイルからデータを読み取って特定のBeanFactoryに戻すことができる高級なIoC構成機構を提供しています.本文では最も簡単な例からBeactory Factoryを使用する方法を示します.
 
Bikeクラス:
 
package com.james.beanfactory;

public class Bike {
	private String brand;
	private String type;
	private int price;
	
	public Bike() {
		System.out.println("In Bike Constructor");	
	}
	
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	
	public void display(){
		System.out.println("This is " + brand + " " + type + ", You can get me by CNY: " + price);
	}
	
	public void rideTo(String add){
		System.out.println("Riding to: " + add);
	}

}
 
 
ライダークラス:
 
package com.james.beanfactory;

public class Rider {
	private String name;
	private Bike bike;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Bike getBike() {
		return bike;
	}
	public void setBike(Bike bike) {
		this.bike = bike;
	}
	
	public void rideTo(String to) {
		System.out.println("In Rider.rideTo()");
		bike.rideTo(to);
	}	

}
 
 
XML beanプロファイル:
 
<?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="bike" class="com.james.beanfactory.Bike" 
		 p:brand="Giant"
		 p:type="ATX 770D"
		 p:price = "2598"
		 />
	<bean id="rider" class="com.james.beanfactory.Rider" 
		 p:name="james"
		 p:bike-ref="bike"
		 />
</beans>
 
 
テストクラス:
 
package com.james.beanfactory;

import java.io.IOException;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

public class BeanTest {

	public static void main(String[] args) throws IOException {
		// Read the XML configuration file.
		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		Resource res = resolver.getResource("classpath:com/james/beanfactory/beans.xml");
		System.out.println(res.getURL());
		
		// Get and use bean.
		BeanFactory bf = new XmlBeanFactory(res);
		Bike myBike = bf.getBean("bike", Bike.class);
		myBike.display();
		
		// A Rider contains a Bike, The dependancy is set in xml. 
		Rider r = bf.getBean("rider", Rider.class);
		r.rideTo("Tibet");
	}

}
 
 
実行結果:
 
file:/E:/masterSpring/chapter3/WebRoot/WEB-INF/classes/com/james/beanfactory/beans.xml
2013-11-02 22:35:15,823  INFO [main] (XmlBeanDefinitionReader.java:315) - Loading XML bean definitions from class path resource [com/james/beanfactory/beans.xml]
In Bike Constructor
This is Giant ATX 770D, You can get me by CNY: 2598
In Rider.rideTo()
Riding to: Tibet
 
 
説明:
  • ここでは、私たちのBikeとRiderは、パラメータを必要とせずに構成されています.
  • XMLの構成ファイルにはBikeとRiderの属性と依存関係が伝達されています.
  • は、複数の注入方式を用いて1つのビーンを取得することができ、この例は、単に属性注入
  • を用いているだけである.