亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BeanFactory和ApplicationContext的區別是什么

發布時間:2021-07-05 18:16:41 來源:億速云 閱讀:149 作者:chen 欄目:大數據

這篇文章主要講解了“BeanFactory和ApplicationContext的區別是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“BeanFactory和ApplicationContext的區別是什么”吧!


什么是 Spring Bean

這是一個非常簡單而又很復雜的問題,通常來說,Spring beans 就是被 Spring 容器所管理的 Java 對象,來看一個簡單的例子

package com.zoltanraffai;  
public class HelloWorld { 
   private String message;  
   public void setMessage(String message){ 
      this.message  = message; 
   }  
   public void getMessage(){ 
      System.out.println("My Message : " + message); 
   } 
}

在基于 XML 的配置中, beans.xml 為 Spring 容器管理 bean 提供元數據

什么是 Spring 容器

Spring 容器負責實例化,配置和裝配 Spring beans,下面來看如何為 IoC 容器配置我們的 HelloWorld POJO

<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
   <bean id = "helloWorld" class = "com.zoltanraffai.HelloWorld">
      <property name = "message" value = "Hello World!"/>
   </bean>
</beans>

現在,它已經被 Spring 容器管理了,接下來的問題是:我們怎樣獲取它?

BeanFactory 和 ApplicationContext 的不同點

BeanFactory 接口

這是一個用來訪問 Spring 容器的 root 接口,要訪問 Spring 容器,我們將使用 Spring 依賴注入功能,使用 BeanFactory 接口和它的子接口 特性:

  • Bean 的實例化/串聯 通常情況,BeanFactory 的實現是使用懶加載的方式,這意味著 beans 只有在我們通過 getBean() 方法直接調用它們時才進行實例化 實現 BeanFactory 最常用的 API 是 XMLBeanFactory 這里是如何通過 BeanFactory 獲取一個 bean 的例子:

package com.zoltanraffai;  
import org.springframework.core.io.ClassPathResource;  
import org.springframework.beans.factory.InitializingBean; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
public class HelloWorldApp{ 
   public static void main(String[] args) { 
      XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("beans.xml")); 
      HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");    
      obj.getMessage();    
   }
}

ApplicationContext 接口

ApplicationContext 是 Spring 應用程序中的中央接口,用于向應用程序提供配置信息 它繼承了 BeanFactory 接口,所以 ApplicationContext 包含 BeanFactory 的所有功能以及更多功能!它的主要功能是支持大型的業務應用的創建 特性:

  • Bean instantiation/wiring

  • Bean 的實例化/串聯

  • 自動的 BeanPostProcessor 注冊

  • 自動的 BeanFactoryPostProcessor 注冊

  • 方便的 MessageSource 訪問(i18n)

  • ApplicationEvent 的發布 與 BeanFactory 懶加載的方式不同,它是預加載,所以,每一個 bean 都在 ApplicationContext 啟動之后實例化 這里是 ApplicationContext 的使用例子:

package com.zoltanraffai;  
import org.springframework.core.io.ClassPathResource;  
import org.springframework.beans.factory.InitializingBean; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
public class HelloWorldApp{ 
   public static void main(String[] args) { 
      ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml"); 
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");    
      obj.getMessage();    
   }
}

總結

ApplicationContext 包含 BeanFactory 的所有特性,通常推薦使用前者。但是也有一些限制情形,比如移動應用內存消耗比較嚴苛,在那些情景中,使用更輕量級的 BeanFactory 是更合理的。然而,在大多數企業級的應用中,ApplicationContext 是你的首選。

感謝各位的閱讀,以上就是“BeanFactory和ApplicationContext的區別是什么”的內容了,經過本文的學習后,相信大家對BeanFactory和ApplicationContext的區別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红原县| 宜黄县| 海林市| 若尔盖县| 海丰县| 宜兰县| 三江| 志丹县| 西林县| 曲沃县| 中宁县| 哈尔滨市| 北宁市| 会东县| 林口县| 宁乡县| 天气| 兰溪市| 旺苍县| 莫力| 大城县| 呼和浩特市| 汪清县| 阜宁县| 武夷山市| 即墨市| 罗田县| 商河县| 普陀区| 怀来县| 延安市| 禄丰县| 孟津县| 东山县| 阿图什市| 鹤庆县| 临邑县| 昌平区| 米易县| 盱眙县| 淮阳县|