欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解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)

相關文章

  • SpringBoot整合Dozer映射框架流程詳解

    SpringBoot整合Dozer映射框架流程詳解

    dozer是用來兩個對象之間屬性轉換的工具,有了這個工具之后,我們將一個對象的所有屬性值轉給另一個對象時,就不需要再去寫重復的set和get方法了,下面介紹下SpringBoot中Dozer的使用,感興趣的朋友一起看看吧
    2022-07-07
  • 淺談Java 對于繼承的初級理解

    淺談Java 對于繼承的初級理解

    下面小編就為大家?guī)硪黄獪\談Java 對于繼承的初級理解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java設計模式之代理模式詳解

    Java設計模式之代理模式詳解

    這篇文章主要介紹了Java設計模式之代理模式詳解,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • JAVA 對象創(chuàng)建與對象克隆

    JAVA 對象創(chuàng)建與對象克隆

    這篇文章主要介紹了JAVA 對象創(chuàng)建與對象克隆,new 創(chuàng)建、反射、克隆、反序列化,克隆它分為深拷貝和淺拷貝,通過調用對象的 clone方法,進行對象的克隆,下面來看看文章的詳細內容吧
    2022-02-02
  • Java中的Cglib動態(tài)代理詳細解讀

    Java中的Cglib動態(tài)代理詳細解讀

    這篇文章主要介紹了Java中的Cglib動態(tài)代理詳細解讀,CGLib是一個強大的、高性能、高質量的 Code 生成類庫,它可以在運行期擴展 Java 類與實現 Java 接口,需要的朋友可以參考下
    2023-11-11
  • java根據List內對象的屬性排序方法

    java根據List內對象的屬性排序方法

    下面小編就為大家分享一篇java根據List內對象的屬性排序方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Java使用wait和notify實現線程之間的通信

    Java使用wait和notify實現線程之間的通信

    Java 線程通信是將多個獨立的線程個體進行關聯(lián)處理,使得線程與線程之間能進行相互通信,下面這篇文章主要給大家介紹了關于Java使用wait和notify實現線程之間通信的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Java中的線程死鎖是什么?如何避免?

    Java中的線程死鎖是什么?如何避免?

    這篇文章主要介紹了Java中線程死鎖的相關資料,以及避免死鎖的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • 詳解Servlet入門級設置(超詳細 IDEA2020版)

    詳解Servlet入門級設置(超詳細 IDEA2020版)

    這篇文章主要介紹了詳解Servlet入門級設置(超詳細 IDEA2020版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Mybatis關聯(lián)映射舉例詳解

    Mybatis關聯(lián)映射舉例詳解

    關聯(lián)關系是面向對象分析、面向對象設計最終的思想,Mybatis完全可以理解這種關聯(lián)關系,如果關系得當,Mybatis的關聯(lián)映射將可以大大簡化持久層數據的訪問
    2022-07-07

最新評論