spring加載bean的方法
用spring的時候,需要一個applicationContext.xml文件,放到工程目錄src下,每次我想獲得這個xml文件里的bean的時候,就要這樣寫: BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContext.xml");
因為是放到src下,所以用的是ClassPathXmlApplicationContext這個方法來取得xml文件。但是還有沒有別的方法呢?在網上搜索到一些:
Tips1:
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("web/WEB-INF/classes/applicationContext.xml")); // 從文件系統中的xml文件載入上下文信息 ApplicationContext fx = new FileSystemXmlApplicationContext("web/WEB-INF/classes/applicationContext.xml"); // 從類路徑中的xml文件載入上下文信息 ApplicationContext cx = new ClassPathXmlApplicationContext("applicationContext.xml");
Tips2:
//完全可以不寫,只要放在classes下,spring的jar包自己會去讀
//如果參數為空,則使用默認的applicationContext.xml,如果找不到,拋出異常
//如果參數不為空,以您的實參來確定 BEAN 文件的XML 位置
BeanFactory beanFactory = new ClassPathXmlApplicationContext();
Tips3:
在給工程添加spring特征庫的時候就可以把它放到指定的路徑下。在工程的src下建一個config包,然后添加spring特征庫,添加的時候把applicationContext.xml放到定義好的包里就好了,spring會自動配置好路徑,到時候直接用就行了
BeanFactory:提供DI功能多種實現,XMLBeanFactory 是最常用的,依賴 Resource , 有兩種 Resource 實現最常用:ClassPathResource ,FileSystemResource
ApplicationContext : 擴展了BeanFactory三種常用實現:
ClassPathXmlApplicationContext:是從當前類路徑中檢索配置文件並裝載它來創建容器的實例;
FileSystemXmlApplicationContext,他也是ApplicationContext接口的實現類,它和ClassPathXmlApplicationContext類的不同就在於讀 取Spring配置文件的方式。它不再從類路徑中獲取配置文件,而是通過參數指定配置文件的位置,可以獲取類路徑之外的資源。具體語法格式: ApplicationContext context = new FileSystemXmlApplicationContext(String configLocation)(configLocation,就是之你上下文放置的路徑);
XmlWebApplicationContext:從web.xml中加載
scope有兩種取值:
1、singleton(默認值):每次調用getBean的時候返回相同的實例,在IOC容器里只創建一個實例。
2、prototype:每次調用getBean的時候返回不同的實例,在IOC容器里創建多個實例。
abstract取值,默認是false。
當abstract取true時說明這是個抽象bean,沒有具體的現實,不用配置type具體的實現類。可以讓其他bean來繼承。
一些建議:
1.建議查一下“import”標簽,通過“import”標簽可以將其它配置文件注入置當前配置文件,就類似與java的import。提這個是建議:將applicationContext.xml文件做成配置文件的集合,而文件集合中的每個文件都描述項目中具體的功能或組件,這樣配置文件就比較清晰。
2.Spring是容器,重要的不在於實現容器(實例化),而是在於使用容器。
3.最后建議能看一下Spring的源碼,一方面可以幫助了解如何使用Spring,另一方面可以幫助深入理解Spring。
