spring中的BeanFactory与ApplicationContext的作用和区别?
作用:1. BeanFactory負責讀取bean配置文檔,管理bean的加載,實例化,維護bean之間的依賴關系,負責bean的聲明周期。
? ? ? ? ? 2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,還提供了更完整的框架功能:
? ? ? ? ? ? ? ? ?a. 國際化支持
? ? ? ? ? ? ? ? ? ? ? ?b. 資源訪問:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”
? ? ? ? ? ? ? ? ? ? ? ?c. 事件傳遞:通過實現ApplicationContextAware接口
? ? ? ? ? ? ? ? ?3. 常用的獲取ApplicationContext的方法:
? ? ? ? ? ? ? ? ?FileSystemXmlApplicationContext:從文件系統或者url指定的xml配置文件創建,參數為配置文件名或文件名數組
? ? ? ? ? ? ? ? ?ClassPathXmlApplicationContext:從classpath的xml配置文件創建,可以從jar包中讀取配置文件
? ? ? ? ? ? ? ? WebApplicationContextUtils:從web應用的根目錄讀取配置文件,需要先在web.xml中配置,可以配置監聽器或者servlet來實現
? ? ? ? ? ? ? <listener>
? ? ? ? ? ? ? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
? ? ? ? ? ? ?</listener>
? ? ? ? ? ? <servlet>
? ? ? ? ? ? <servlet-name>context</servlet-name>
? ? ? ? ? ? <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
? ? ? ? ? ?<load-on-startup>1</load-on-startup>
? ? ? ? ? ? ?</servlet>
這兩種方式都默認配置文件為web-inf/applicationContext.xml,也可使用context-param指定配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myApplicationContext.xml</param-value>
</context-param>
//如果配置文件放置在類路徑下,用戶可以優先使用ClassPathXmlApplicationContext實現類ApplicationContext ctx = new ClassPathXmlApplicationContext("com/baobaotao/context/*.xml");Car car1 = ctx.getBean("car",Car.class);
//如果配置文件放置在文件系統的路徑下,則可以優先考慮使用FileSystemXmlApplicationContext實現類 // ctx = new FileSystemXmlApplicationContext("D:/masterSpring/chapter3/src/com/baobaotao/context/*.xml"); // Car car2 = ctx.getBean("car",Car.class);} }
?ApplicationContext的初始化和BeanFactory有一個重大的區別:BeanFactory在初始化容器時,并未實例化Bean,直到第一次訪問某個Bean時才實例目標Bean;而ApplicationContext則在初始化應用上下文時就實例化所有的單實例的Bean。因此ApplicationContext的初始化時間會比BeanFactory稍長一些.
轉載于:https://www.cnblogs.com/DreamDrive/p/4094502.html
總結
以上是生活随笔為你收集整理的spring中的BeanFactory与ApplicationContext的作用和区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【预测模型-ELAMN预测】基于海鸥算法
- 下一篇: Eclipse中文版代码自动补全设置