package spring.sample.ioc.sample2;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

/**
 * IoCコンテナに登録されたオブジェクト同士の関連を作成するサンプルです<br>
 * PersonクラスオブジェクトにPCクラスオブジェクトの関連を加えます
 * <br>
 * @author MBeans
 * @version 1.0
 */
public class Sample2 {
	private static final Log log = LogFactory.getLog(Sample2.class);

	public static void main(String[] args) {
		// クラスパスにある設定ファイルを読み込みます。
		Resource resource = new ClassPathResource("/spring/sample/ioc/sample2/sample2.xml");
		// リソースから、BeanFactoryのオブジェクトを作成します。
		// これが、コンテナの役割をします。
		BeanFactory beanFactory = new XmlBeanFactory(resource);
		
		// BeanFactoryから名前を指定してオブジェクトを取得します。
		Person taro = (Person)beanFactory.getBean("taro");
		
		System.out.println("Taro Info...");
		System.out.println("id : " + taro.getId());
		System.out.println("name : " + taro.getName());
		System.out.println("age : " + taro.getAge());
		System.out.println();
		
		PC taroPC = taro.getMyPC();
		System.out.println("Taro's PC Info...");
		System.out.println("name : " + taroPC.getName());
		System.out.println("lease or not lease : " + (taroPC.isLease() ? "lease" : "not lease"));
	}
}
