spring創建對象的三種方式及時間


創建對象的三種方式:     

       1、採用默認的構造函數創建

       2、採用靜態工廠方法

          1、寫一個靜態工廠方法類

               public class HelloWorldFactory {

                  public static HelloWorld getInstance(){

                     return new HelloWorld();

                  }

               }

          2、在spring的配置文件中進行聲明

                <bean id="helloWorld2" class="com.itheima05.spring.bean.HelloWorldFactory"

                           factory-method="getInstance"></bean>

                告訴spring容器利用HelloWorldFactory類中的getInsatance靜態方法產生對象

                但是具體的對象的創建的過程是由程序員來完成的

       3、實例工廠方法

          1、寫一個實例工廠類

              public class HelloWorldFactory {

                  public HelloWorld getInstance(){

                     return new HelloWorld();

                  }

               }

          2、在spring的配置文件中

            1、<bean id="helloWorld3" class="com.itheima05.spring.bean.HelloWorldFactory2"></bean>

                   spring容器爲HelloWorldFactory2創建對象

            2、<bean id="helloWorldFactory" factory-bean="helloWorld3" factory-method="getInstance"></bean>

                  告訴spring容器,利用helloWorld3對象調用getInstance方法

 

創建對象的時機

          1、在默認的情況下,在spring容器啓動的時候創建對象

                   在spring配置文件中,只要根據以上的三種方式的其中一種配置了,spring容器就會創建對象

                   好處:spring容器和web容器整合的時候,當web容器啓動的時候就可以初始化spring容器了,如果這個時候

                           spring容器內部有錯誤,則直接會報錯

                   如果該bean中存放着大量的數據,而且數據的初始化發生在創建對象的時候,這個時候,數據會過早的駐留在內存中

          2、如果在spring的配置文件中一個bean的配置中有lazy-init="true",那麼該bean在調用getBean方法時創建對象

                   不好處:不能過早的發現錯誤

                   好處:按照需求加載數據(什麼時候要什麼時候加載)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章