Spring中bean的範圍及Spring容器初始化的相關問題_SPRING

來源:互聯網
上載者:User

Spring中bean的範圍:
        在Spring容器中,bean的範圍範圍預設是單例模式的,singleton,單例模式可以由多個線程並發訪問,如果

我們想改變bean的範圍範圍,將其改變為多例模式,即每次從容器中擷取相同的bean時,都是新的bean,而不

是獲得兩次相同的bean,其記憶體位址相同,為true。那麼在設定檔中設定bean的範圍範圍,Spring容器通過

scope="prototype"來將bean的範圍設定為多例模式。如下:
<bean id="userDAO" class="com.aptech.dao.impl.UserDAOImpl" scope="prototype"></bean>

Spring容器初始化相關問題:

        在Spring容器中,預設情況下,容器啟動時初始化所有容器中的bean,但是我們可以指定bean節點的lazy-

init="true"來延遲初始化bean,這時只有在擷取該bean時,才會初始化bean。如:
<bean id="userDAO" class="com.aptech.dao.impl.UserDAOImpl" lazy-init="true"></bean>
  如果想對所有Spring容器中的bean都應用延遲初始化,可以在根節點<beans/>設定default-lazy-

init="true".如下:
<beans default-lazy-init="true" />

        在Spring中,當bean的範圍範圍是預設的單例模式時,bean會在Spring容器啟動時就初始化,如果bean的範圍範圍是多例模式的,bean的初始化是在調用該bean的執行個體時,由beanfactory初始化。如果想在容器啟動時,延遲單例模式bean的初始化,則應該按照上一點的方法。

 

        如果想在bean被初始化的同時,讓bean所對應的類的相應方法執行,比如:調用該類的初始化方法,或者開啟某一資料庫連接等,應該怎麼辦呢。在bean節點中為我們提供了init-method屬性,該屬性用來指定bean初始化時

,同時該bean所對應的類的某一方法同時執行,該屬性的值是對應類中的某一方法。如下:<bean id="userDAO"

class="com.aptech.dao.impl.UserDAOImpl" init-method="getConn"></bean>
當然,如果我們想在gaibean銷毀時,也同時執行gaibean對應類的某一方法,Spring也提供了一個屬性:

destroy-method,該方法將在bean被銷毀之前調用,該屬性的值也是對應類的某一方法,如:
<bean id="userDAO" class="com.aptech.dao.impl.UserDAOImpl" destroy-method="closeAll"></bean>

        怎樣測試bean在容器啟動時是否初始化。因為大多數bean的建立都是通過類構造器來執行個體化的,所以在bean對應的類中的建構函式中輸出一句話,之後建立一個Spring容器,看是否輸出構造方法中的話,如果輸出則證明在

Sping容器啟動時bean就初始化了,如果沒有輸出則……

思考:bean什麼時候被銷毀呢。 在Spring容器關閉的時候被銷毀。
      那怎樣關閉Spring容器呢。使用一個抽象類別AbstractApplicationContext ,如下:
 AbstractApplicationContext context = new ClassPathXmlApplicationContext

("applicationContext.xml");
 // 關閉Spring容器
 context.close();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.