<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring – IoC 容器 > 原文: [https://howtodoinjava.com/spring-core/different-spring-ioc-containers/](https://howtodoinjava.com/spring-core/different-spring-ioc-containers/) **Spring IoC 容器**是 Spring 框架的核心。 容器將創建對象,將它們連接在一起,進行配置,并管理從創建到銷毀的整個生命周期。 Spring 容器使用依賴項注入(DI)來管理組成應用程序的組件。 Spring 在**提供兩種類型的容器**。 1. `BeanFactory`容器 2. `ApplicationContext`容器 > 閱讀更多:[控制反轉和依賴注入](https://howtodoinjava.com/spring-core/spring-ioc-vs-di/) ## 1\. `BeanFactory` [`BeanFactory`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html) 本質上不過是一個高級工廠的接口,該工廠能夠維護不同 Bean 及其依賴項的注冊表。 `BeanFactory`使我們能夠讀取 bean 定義并使用 bean 工廠訪問它們。 #### 1.1. 如何創建`BeanFactory` 僅使用`BeanFactory`時,我們可以創建一個并以 XML 格式讀取一些 bean 定義,如下所示: `How to Create XmlBeanFactory` ```java InputStream is = new FileInputStream("beans.xml"); BeanFactory factory = new XmlBeanFactory(is); //Get bean HelloWorld obj = (HelloWorld) factory.getBean("helloWorld"); ``` 創建 bean 工廠的其他方法如下: `How to Create XmlBeanFactory` ```java Resource resource = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); ClassPathResource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); ``` 基本上就是全部。 使用`getBean(String)`,您可以檢索 bean 的實例; `BeanFactory`的客戶端視圖非常簡單。 #### 1.2. `BeanFactory`方法 `BeanFactory`接口只有六個方法可用于調用客戶端代碼: 1. `boolean containsBean(String)`:如果`BeanFactory`包含與給定名稱匹配的 bean 定義或 bean 實例,則返回`true` 2. `Object getBean(String)`:返回以給定名稱注冊的 bean 的實例。 根據`BeanFactory`配置對 bean 的配置方式,將返回單例(因此是共享實例)或新創建的 bean。 如果找不到該 bean(在這種情況下它將是`NoSuchBeanDefinitionException`),或者在實例化和準備該 bean 時發生異常,則會拋出`BeansException` 3. `Object getBean(String, Class)`:返回以給定名稱注冊的 bean。 返回的 bean 將被強制轉換為給定的`Class`。 如果無法投射 bean,則將引發相應的異常(`BeanNotOfRequiredTypeException`)。 此外,`getBean(String)`方法的所有規則均適用(請參見上文) 4. `Class getType(String name)`:返回具有給定名稱的 bean 的`Class`。 如果找不到與給定名稱對應的 bean,將拋出`NoSuchBeanDefinitionException` 5. `boolean isSingleton(String)`:確定以給定名稱注冊的 bean 定義或 bean 實例是否為單例。 如果找不到與給定名稱相對應的 bean,將拋出`NoSuchBeanDefinitionException` 6. `String[] getAliases(String)`:返回給定 bean 名稱的別名(如果在 bean 定義中定義了別名) ## 2\. `ApplicationContext` [`ApplicationContext`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html) 容器添加了更多企業特定的功能,例如從屬性文件解析文本消息的功能以及將應用程序事件發布到感興趣的事件監聽器的功能。 該容器由`org.springframework.context.ApplicationContext`接口定義。 `ApplicationContext`容器包含`BeanFactory`容器的所有功能,因此通常建議在`BeanFactory`上使用。 `BeanFactory`仍可用于數據量和速度非常重要的輕量級應用程序,例如移動設備或基于 applet 的應用程序。 #### 2.1. `ApplicationContext`的類型 最常用的`ApplicationContext`實現是: 1. [`FileSystemXmlApplicationContext`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/support/FileSystemXmlApplicationContext.html) – 此容器從 XML 文件加載 Bean 的定義。 在這里,您需要向構造函數提供 XML bean 配置文件的完整路徑。 2. [`ClassPathXmlApplicationContext`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/support/ClassPathXmlApplicationContext.html) – 此容器從 XML 文件加載 Bean 的定義。 在這里,您不需要提供 XML 文件的完整路徑,但是需要正確設置 CLASSPATH,因為此容器將在 CLASSPATH 中查找 bean 配置 XML 文件。 3. [`WebXmlApplicationContext`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/context/support/XmlWebApplicationContext.html) – 此容器從 Web 應用程序中加載帶有所有 bean 定義的 XML 文件。 #### 2.2. 如何創建`ApplicationContext` 用于應用程序上下文實例化的示例代碼如下所示。 `How to create ApplicationContext` ```java ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml"); HelloWorld obj = (HelloWorld) context.getBean("helloWorld"); ``` 將我的問題放在評論部分。 學習快樂! 參考文獻: [`BeanFactory` Java 文檔](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html) [`ApplicationContext` Java 文檔](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看