首頁>技術>

相同:

Spring提供了兩種不同的IOC 容器,一個是BeanFactory,另外一個是ApplicationContext,它們都是Java interface,ApplicationContext繼承於BeanFactory(ApplicationContext繼承ListableBeanFactory。它們都可以用來配置XML屬性,也支援屬性的自動注入。而ListableBeanFactory繼承BeanFactory),BeanFactory 和 ApplicationContext 都提供了一種方式,使用getBean("bean name")獲取bean。

BeanFactory 獲取bean註冊資訊

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 獲取bean註冊資訊

public class HelloWorldApp{    public static void main(String[] args) {       ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");       HelloWorld obj = (HelloWorld) context.getBean("helloWorld");          obj.getMessage();       }}

但是他們在工作和特性上有一些不同:

當你呼叫getBean()方法時,BeanFactory僅例項化bean,而ApplicationContext 在啟動容器的時候例項化單例bean,不會等待呼叫getBean()方法時再例項化。BeanFactory不支援國際化,即i18n,但ApplicationContext提供了對它的支援。BeanFactory與ApplicationContext之間的另一個區別是能夠將事件釋出到註冊為監聽器的bean。BeanFactory 的一個核心實現是XMLBeanFactory 而ApplicationContext 的一個核心實現是ClassPathXmlApplicationContext,Web容器的環境我們使用WebApplicationContext並且增加了getServletContext 方法。如果使用自動注入並使用BeanFactory,則需要使用API註冊AutoWiredBeanPostProcessor,如果使用ApplicationContext,則可以使用XML進行配置。簡而言之,BeanFactory提供基本的IOC和DI功能,而ApplicationContext提供高階功能,BeanFactory可用於測試和非生產使用,但ApplicationContext是功能更豐富的容器實現,應該優於BeanFactory

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • SpringBoot結合SpringDoc