javascript
ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用
如果說BeanFactory是Spring的心臟,那么ApplicationContext就是完整的身軀了。ApplicationContext由BeanFactory派生而來,提供了更多面向實際應用的功能。
ApplicationContext類體系結構
ApplicationContext的主要實現類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默認從類路徑加載配置文件,后者默認從文件系統中裝載配置文件
和BeanFactory初始化相似,ApplicationContext的初始化也很簡單,如果配置文件放置在類路徑下,用戶可以優先使用ClassPathXmlApplicationContext實現類:
ApplicationContext?ctx?=?new?ClassPathXmlApplicationContext(“com/baobaotao/context/beans.xml”)
對于ClassPathXmlApplicationContext來說,”com/baobaotao/context/beans.xml”等同于”classpath: com/baobaotao/context/beans.xml”。
如果配置文件放置在文件系統的路徑下,則可以優先考慮使用FilySystemXmlApplicationContext實現類:?
ApplicationContext?ctx?=new?FileSystemXmlApplicationContext(“com/baobaotao/context/beans.xml”); ?
對于FileSystemXmlApplicationContext來說,“com/baobaotao/context/beans.xml”等同于“file:com/baobaotao/context/beans.xml”。
?還可以指定一組配置文件,Spring會自動將多個配置文件在內存中”整合”成一個配置文件,如下所示:
ApplicationContext?ctx?=?new?ClassPathXmlApplicationContext(new?String[]{“conf/beans1.xml”,”conf/beans2.xml”});
當然FileSystemXmlApplicationContext和ClassPathXmlApplicationContext都可以顯式使用帶資源類型(classpath:或file:)前綴的路徑,它們的區別在于如果不顯式指定資源類型前綴,將分別將路徑解析為文件系統路徑和類路徑罷了。
在獲取ApplicationContext實例后,就可以像BeanFactory一樣調用getBean(beanName)返回Bean了。
ApplicationContext的初始化和BeanFactory有一個重大的區別:BeanFactory在初始化容器時,并未實例化Bean,直到第一次訪問某個Bean時才實例目標Bean;而ApplicationContext則在初始化應用上下文時就實例化所有單實例的Bean。
因此ApplicationContext的初始化時間會比BeanFactory稍長一些,不過稍后的調用則沒有”第一次懲罰”的問題。
企業級開發過程中,一般使用Spring注解開發。使用注解獲取Spring容器管理的類(這些類都必須是Spring容器中的類)!
開發過程中,有時會遇到需要在普通類中注入spring管理的單例bean。直接注入是注入不進去的,這是就需要創建一個工具類來獲取Spring容器管理的bean
總結
以上是生活随笔為你收集整理的ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类加载子系统的详解——未完待续
- 下一篇: fastjson的值过滤器ValueFi