最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java的Spring框架中bean的定義以及生命周期

 更新時間:2015年12月05日 15:55:53   投稿:goldensun  
這篇文章主要介紹了Java的Spring框架中bean的定義以及生命周期,bean的實例化是Java web開發(fā)中的重要基礎,需要的朋友可以參考下

bean的定義
形成應用程序的骨干是由Spring IoC容器所管理的對象稱為bean。bean被實例化,組裝,并通過Spring IoC容器所管理的對象。這些bean由容器提供,例如,在XML的<bean/>定義,已經看到了前幾章的形式配置元數據創(chuàng)建。

bean定義包含所需要的容器要知道以下稱為配置元數據的信息:

  1. 如何創(chuàng)建一個bean
  2. Bean 生命周期的詳細信息
  3. Bean 依賴關系

上述所有配置元數據轉換成一組的下列屬性構成每個bean的定義。

2015125153541254.png (578×441)

Spring配置元數據
Spring IoC容器完全由在此配置元數據實際寫入的格式解耦。有下列提供的配置元數據的Spring容器三個重要的方法:

  1. 基于XML的配置文件
  2. 基于注解的配置
  3. 基于Java的配置

我們已經看到了基于XML的配置元數據如何提供給容器,但讓我們看到了不同的bean定義,包括延遲初始化,初始化方法和銷毀方法基于XML配置文件的另一個示例:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <!-- A simple bean definition -->
  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- A bean definition with lazy init set on -->
  <bean id="..." class="..." lazy-init="true">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- A bean definition with initialization method -->
  <bean id="..." class="..." init-method="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- A bean definition with destruction method -->
  <bean id="..." class="..." destroy-method="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- more bean definitions go here -->

</beans>

bean的生命周期
Spring bean的生命周期是很容易理解。當一個bean實例化時,它可能需要執(zhí)行一些初始化把它轉換成可用狀態(tài)。類似地,當bean不再需要,并且從容器中取出,一些清理的工作可能也需要做。

不過,還有把bean背后的實例化和銷毀時間之間的場景發(fā)生的活動,但是本章將只討論其中兩個是需要在bean的初始化和銷毀的時候,重要bean的生命周期回調方法。

要定義安裝和拆卸一個bean,我們只是聲明了初始化方法和/或銷毀,方法的參數<bean>。在init-method屬性指定一個方法,是被調用bean后立即實例化。同樣,銷毀方法規(guī)定了被調用當bean被從容器中取出之前的方法。

初始化回調:
org.springframework.beans.factory.InitializingBean 接口指定一個單一的方法:

void afterPropertiesSet() throws Exception;
因此,可以簡單地實現上述接口和初始化工作可以在里面afterPropertiesSet() 方法,如下所示:

public class ExampleBean implements InitializingBean {
  public void afterPropertiesSet() {
   // do some initialization work
  }
}

在基于XML的配置元數據的情況下,可以使用init-method 屬性來指定具有void無參數簽名的方法的名稱。例如:

<bean id="exampleBean" 
     class="examples.ExampleBean" init-method="init"/>

下面是類的定義:

public class ExampleBean {
  public void init() {
   // do some initialization work
  }
}

銷毀回調
org.springframework.beans.factory.DisposableBean接口指定一個單一的方法:

void destroy() throws Exception;

因此,你可以簡單地實現上述接口和定稿工作可以做里面的destroy() 方法,如下所示:

public class ExampleBean implements DisposableBean {
  public void destroy() {
   // do some destruction work
  }
}

在基于XML的配置元數據的情況下,您可以使用destroy-method屬性來指定具有void無參數簽名的方法的名稱。例如:

<bean id="exampleBean" 
     class="examples.ExampleBean" destroy-method="destroy"/>

下面是類的定義:

public class ExampleBean {
  public void destroy() {
   // do some destruction work
  }
}

如果您在非web應用環(huán)境中使用Spring的IoC容器,例如在桌面富客戶端環(huán)境; 注冊關閉鉤子在JVM中。這樣做可以確保正常關機,并讓所有的資源都被釋放調用singleton bean上的相關destroy方法。

建議不要使用的InitializingBean或者DisposableBean的回調,因為XML配置提供極大的靈活性在命名你的方法方面。

例如:
使用Eclipse IDE,然后按照下面的步驟來創(chuàng)建一個Spring應用程序:

2015125155428594.png (577×295)

相關文章

  • Java調用Redis集群代碼及問題解決

    Java調用Redis集群代碼及問題解決

    這篇文章主要介紹了Java調用Redis集群代碼及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • SpringMVC整合kinfe4j及問題解決分析

    SpringMVC整合kinfe4j及問題解決分析

    這篇文章主要為大家介紹了SpringMVC整合kinfe4j及問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java開發(fā)之HashMap的使用和遍歷

    Java開發(fā)之HashMap的使用和遍歷

    這篇文章主要介紹了Java開發(fā)之HashMap的使用和遍歷的相關資料,這里提供一個HashMap的簡單實例并結合List使用,需要的朋友可以參考下
    2017-08-08
  • java中Class.forName的作用淺談

    java中Class.forName的作用淺談

    這篇文章介紹了java中Class.forName的作用,有需要的朋友可以參考一下
    2013-11-11
  • 將List集合中的map對象轉為List<對象>形式實例代碼

    將List集合中的map對象轉為List<對象>形式實例代碼

    這篇文章主要介紹了將List集合中的map對象轉為List<對象>形式實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解Mybatis Generator的具體使用教程

    詳解Mybatis Generator的具體使用教程

    Mybatis Generator可以幫助我們自動生成很多結構化的代碼,比如每張表對應的Entity、Mapper接口和Xml文件,可以省去很多繁瑣的工作,今天通過本文給大家介紹Mybatis Generator的具體使用教程,感興趣的朋友一起看看吧
    2022-02-02
  • 淺析Java中為什么要設計包裝類

    淺析Java中為什么要設計包裝類

    我們知道Java是一個面相對象的編程語言,基本類型并不具有對象的性質,為了讓基本類型也具有對象的特征,就出現了包裝類型,它相當于將基本類型“包裝起來”,使得它具有了對象的性質,并且為其添加了屬性和方法,豐富了基本類型的操作
    2021-06-06
  • 詳解Maven optional關鍵字透徹圖解

    詳解Maven optional關鍵字透徹圖解

    這篇文章主要介紹了詳解Maven optional關鍵字透徹圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Java獲取http和https協議返回的json數據

    Java獲取http和https協議返回的json數據

    本篇文章主要介紹了Java獲取http和https協議返回的json數據 ,本篇文章提供兩個方法,幫助各位如何獲取http和https返回的數據。有興趣的可以了解一下。
    2017-01-01
  • 解決Thymeleaf中onclick的坑

    解決Thymeleaf中onclick的坑

    Thymeleaf中onclick屬性無法直接傳遞字符串參數,需改用data-*屬性存儲,再通過JS讀取,避免模板解析錯誤,但可能仍有警告
    2025-08-08

最新評論

垫江县| 临桂县| 屏东市| 林州市| 资兴市| 天镇县| 天全县| 二连浩特市| 海丰县| 台北县| 鹤山市| 黄大仙区| 铜梁县| 葵青区| 遂昌县| 辉南县| 衡阳县| 双峰县| 怀集县| 奉化市| 房产| 武功县| 叶城县| 安塞县| 景洪市| 定陶县| 城市| 洛隆县| 南溪县| 郎溪县| 家居| 绵阳市| 霍州市| 城口县| 涞源县| 郴州市| 大埔区| 友谊县| 怀化市| 改则县| 左权县|