日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring中的BeanFactory与ApplicationContext的作用和区别?

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>

Spring的IoC容器就是一個實現了BeanFactory接口的可實例化類。事實上,Spring提供了兩種不同的容器:一種是最基本的BeanFactory,另一種是擴展的ApplicationContext。BeanFactory 僅提供了最基本的依賴注入支持,而 ApplicationContext 則擴展了BeanFactory ,提供了更多的額外功能。實例化這兩種容器時是有區別的: public class BeanFactoryTest {public static void main(String[] args) throws Throwable{ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();Resource res = resolver.getResource("classpath:com/baobaotao/beanfactory/beans.xml");System.out.println(res.getURL());BeanFactory bf = new XmlBeanFactory(res);System.out.println("init BeanFactory.");Car car = bf.getBean("car",Car.class);System.out.println("car bean is ready for use!");car.introduce();} } public class XmlApplicationContextTest {public static void main(String[] args) {
//如果配置文件放置在類路徑下,用戶可以優先使用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的作用和区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。