<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [原文](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-beanname) [toc] bean的定義本質上就是創建對象的清單。當詢問容器指定name的bean時,容器查詢清單,使用bean定義封裝的配置元數據來創建或獲取實際對象。 如果使用xml的配置元數據,則元素`<bean/>`的屬性class指定類型的對象實例.這個class屬性,其實是`BeanDefinition`類的內部屬性,通常是必需的(例外情況參考[工廠方法實例對象](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-class-instance-factory-method) 和[子類實例](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-child-bean-definitions)).使用class的兩種方式: * 典型的,容器通過反射直接調用構造方法創建對象,和直接使用java操作符`new`效果類似. * 指定包含靜態工廠方法來創建對象的實際類,比較少用的場景,容器調用類的靜態工廠方法創建bean,這個bean可以是類本身實例,也可以是其他類實例 > *內部類命名* > 對于靜態內部類的定義,需要使用二元名稱.例如在包`com.example`下有個類`Foo`,并且包含靜態內部類`Bar`,定義bean的class屬性的值就是:`com.example.Foo$Bar`. >注意使用$字符來分割內部類和外部類 > ## Instantiation with a constructor 當你通過構造函數來創建bean時,所有普通類都能被spring使用和兼容.即,開發的類不需要實現特定接口或用特定方式編碼,只要指定bean的class就足夠了.然而,根據特定bean使用的ioc容器類型,你可能需要默認的無參構造方法. spring 容器可以管理任何你想要它管理的類,不局限于純javaBeans.大多數spring使用者更喜歡無參構造函數的bean和恰當的get,set模式設置屬性.你的容器中也可以有非bean風格的類.例如,你需要使用一個傳統的絕對不符合javaBean規范的連接池,spring也可以很好的管理它. 基于xml格式的配置元數據,可以如下指定bean的class ~~~xml <bean id="exampleBean" class="examples.ExampleBean"/> <bean name="anotherExample" class="examples.ExampleBeanTwo"/> ~~~ 需要給構造方法提供參數,或者在對象實例化后設置屬性,參考[依賴注入](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-collaborators) ## Instantiation with a static factory method 當定義的bean由靜態工廠方法創建時,使用`class`指定包含靜態工廠方法的類(不是工廠方法返回對象的類),屬性`factory-method`指定工廠方法.你可以調用這個方法返回一個活動的對象,隨后把它當做是通過構造方法創建的.這種bean定義方式的用途是調用歷史代碼的靜態工廠方法. 下面的bean定義,指定bean是由工廠方法創建的.僅指定了含有工廠方法的類,并沒有指定返回對象的類型.在這個例子中,`createInstance()`必須是靜態方法. ~~~xml <bean id="clientService" class="examples.ClientService" factory-method="createInstance"/> ~~~ ~~~java public class ClientService { private static ClientService clientService = new ClientService(); private ClientService() {} public static ClientService createInstance() { return clientService; } } ~~~ ## Instantiation using an instance factory method 類似靜態工廠方法實例化,實例工廠方法實例化就是調用容器中已存在的bean的非靜態方法來創建bean.使用這種機制,`class`屬性為空,使用`factory-bean`屬性指定容器中bean的name,這個bean包含創建對象的實例方法,`factory-method`指定工廠方法. ~~~xml <!-- 工廠類, 包含方法 createClientServiceInstance() --> <bean id="serviceLocator" class="examples.DefaultServiceLocator"> </bean> <!-- 工廠類創建的bean --> <bean id="clientService" factory-bean="serviceLocator" factory-method="createClientServiceInstance"/> ~~~ ~~~java public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); public ClientService createClientServiceInstance() { return clientService; } } ~~~ 一個工廠類可以包含多個工廠方法: ~~~xml <bean id="serviceLocator" class="examples.DefaultServiceLocator"> </bean> <bean id="clientService" factory-bean="serviceLocator" factory-method="createClientServiceInstance"/> <bean id="accountService" factory-bean="serviceLocator" factory-method="createAccountServiceInstance"/> ~~~ ~~~java public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); private static AccountService accountService = new AccountServiceImpl(); public ClientService createClientServiceInstance() { return clientService; } public AccountService createAccountServiceInstance() { return accountService; } } ~~~
                  <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>

                              哎呀哎呀视频在线观看