使用容器
這ApplicationContext是進階工廠的接口,能夠維護不同bean及其依賴項的系統資料庫。使用該方法T getBean(String name, Class requiredType)可以檢索bean的執行個體。
一、
在ApplicationContext可以讀取bean定義并通路它們,如下所示:
1.1 怎麼使用容器
首先來看一下容器:
1.2
有很多同學一上來就是搞一個New,可是這是一個ApplicationContext接口啊。
//接口是不能直接new着用的,這個是重寫。
ApplicationContext applicationContext = new ApplicationContext(){...}
1.3
下面這樣用才是對的:ClassPathXmlApplicationContext是類
/**
* @author:wangdong
* @description:怎麼使用容器
*/
public class Test {
public static void main(String[] args) {
// create and configure beans
//可以從XML檔案中讀取需要配置Bean并且加載進容器中
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
}
看一下ClassPathXmlApplicationContext類
二、下面我們來用一下
package org.springframework.test;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.context.support.GenericGroovyApplicationContext;
import org.springframework.core.ResolvableType;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.Locale;
import java.util.Map;
/**
* @author:wangdong
* @description:怎麼使用容器
*/
public class Test {
public static void main(String[] args) {
// create and configure beans
ApplicationContext context1 = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// retrieve configured instance(檢索配置執行個體Bean)
//如果PetStoreService已經建立,并且在上面的.xml檔案中已經配置
PetStoreService service = context1.getBean("petStore", PetStoreService.class);
//GenericApplicationContext和ClassPathXmlApplicationContext類似
//隻不過這裡使用的是.groovy字尾檔案
//使用Groovy配置,bootstrapping看起來非常相似,隻是一個不同的上下文實作類,它可以感覺Groovy(但也了解XML bean定義):
ApplicationContext context2 = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
//最靈活的變體是GenericApplicationContext與.groovy和.xml結合使用
GenericApplicationContext context3 = new GenericApplicationContext();
//用于.xml字尾的檔案
new XmlBeanDefinitionReader(context3).loadBeanDefinitions("services.xml", "daos.xml");
//用于.groovy字尾的檔案
new GroovyBeanDefinitionReader(context3).loadBeanDefinitions("services.groovy", "daos.groovy");
}
}
可以使用它getBean來檢索bean的執行個體。該ApplicationContext 接口還有其他一些檢索bean的方法,但理想情況下,應用程式代碼不應該使用它們。事實上,你的應用程式代碼根本不應該調用該 getBean()方法,是以完全不依賴于Spring API。例如,Spring與Web架構的內建為各種Web架構元件(如控制器和JSF托管的bean)提供了依賴注入,允許您通過中繼資料(例如自動裝配注釋)聲明對特定Bean的依賴關系。
未完待續~~~持續更新