Spring3.0 入门进阶(1):从配置文件装载Bean(一)

2014-11-24 08:14:42 · 作者: · 浏览: 2

Spring 已经盛行多年,目前已经处于3.0阶段,关于Spring的概念介绍性的东西网上已经很多,本系列博客主要是把一些知识点通过代码的方式总结起来,以便查阅.

作为入门,本篇主要介绍Bean的加载

工具类

package com.eric.introduce;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.eric.introduce.di.ConferenceRoom;
import com.eric.introduce.di.DummyConfig;
import com.eric.introduce.di.Knight;
import com.eric.introduce.di.Performer;
import com.eric.introduce.di.RescueDamselQuest;

/**
 * @author Eric
 * 
 */
public class IntroduceUtil {

	private static final String CONFIG_FILE = "com/eric/introduce/introduce.xml";
	private static ApplicationContext context = new ClassPathXmlApplicationContext(
			CONFIG_FILE);

	/**
	 * 通过ClassPathXmlApplication获得Bean实例
	 */
	public static void demonstrateDIByClassContent() {

		Knight knight = (Knight) context.getBean("knight");
		knight.embarkOnQuest();
	}

	/**
	 * 默认情况下Context总是返回同一个对象
	 */
	public static void demonstrateSingleStonClassContent() {
		Knight knight1 = (Knight) context.getBean("knight");
		Knight knight2 = (Knight) context.getBean("knight");
		System.out.println(knight1);
		System.out.println(knight2);

	}

	/**
	 * Spring中的singleSton只是正对一个context而言,不同的上下文会有不同的实例
	 */
	public static void demonstrateSingleStonInContent() {
		ApplicationContext anotherContext = new ClassPathXmlApplicationContext(
				CONFIG_FILE);
		Knight knight1 = (Knight) context.getBean("knight");
		Knight knight2 = (Knight) anotherContext.getBean("knight");
		System.out.println(knight1);
		System.out.println(knight2);

	}

	/**
	 * 通过factoryMethod 加载Bean
	 * 
	 **/
	public static void demonstrateLoadBeanByFactory() {
		DummyConfig dummyConfig = (DummyConfig) context.getBean("config");
		System.out.println(dummyConfig.getConfigurationMap());
	}

	/**
	 * 如果通过factoryMethod的方式加载Bean,即使是不同的Context,任然返回的是同一个Bean实例
	 * 
	 **/
	public static void demonstrateLoadBeanByFactory2() {
		ApplicationContext anotherContext = new ClassPathXmlApplicationContext(
				CONFIG_FILE);
		DummyConfig dummyConfig = (DummyConfig) context.getBean("config");
		DummyConfig dummyConfig2 = (DummyConfig) anotherContext
				.getBean("config");
		System.out.println(dummyConfig);
		System.out.println(dummyConfig2);
	}

	/**
	 * 但Bean定义了Scope设置为Prototype后,每次会实例化不同的实例
	 */
	public static void demonstratePrototypeBean() {
		RescueDamselQuest quest1 = (RescueDamselQuest) context
				.getBean("prototypeQuest");
		RescueDamselQuest quest2 = (RescueDamselQuest) context
				.getBean("prototypeQuest");
		System.out.println(quest1);
		System.out.println(quest2);

	}

	/**
	 * 验证init以及destory方法
	 * 
	 **/
	public static void demonstrateInitAndDestory() {
		ConferenceRoom conferenceRoom = (ConferenceRoom) context
				.getBean("conferenceRoom");
		conferenceRoom.use();
	}

	/**
	 * 验证了注入集合的几种方法
	 */
	public static void demostrateInjectionPropertieWays() {
		Performer performer = (Performer) context
				.getBean("instrumentPerformer");
		performer.performer();
		performer.eatFruit();
		performer.printProperties();
	}

}

配置文件

  

  

	
    
     
   
	
   
	
   
	
   

	
   

	
   

	
   
	
   
	
   

	
    
     
     
     
     
      
     
     
      
       
       
      
     
     
      
      
       FOOTBALL
       
      
       WUHAN
       
      
     
   
	
    
     
      
      
      
     
   

  

由于功能都比较简