1. 程式人生 > >Spring bean的初始化和銷燬三種方式及優先順序

Spring bean的初始化和銷燬三種方式及優先順序

  Spring bean的初始化和銷燬有三種方式

  通過實現 InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;優先順序第二

  通過 元素的 init-method/destroy-method屬性指定初始化之後 /銷燬之前呼叫的操作方法; 優先順序最低

  在指定方法上加上@PostConstruct 或@PreDestroy註解來制定該方法是在初始化之後還是銷燬之前呼叫。 優先順序最高 需要在xml配置檔案中設定bean所在的位置 不然不呼叫成都成華區區治陽痿貴嗎?

  建立一個類

  package com.spring;

  import javax.annotation.PostConstruct;

  import javax.annotation.PreDestroy;

  import org.springframework.beans.factory.DisposableBean;

  import org.springframework.beans.factory.InitializingBean;

  public class InitOrDestory implements InitializingBean,DisposableBean{

  public void Start() {

  System.out.println("xml配置檔案設定初始化");

  }

  public void End() {

  System.out.println("xml配置檔案設定銷燬");

  }

  @Override

  public void destroy() throws Exception {

  System.out.println("實現DisposableBean進行銷燬");

  }

  @Override

  public void afterPropertiesSet() throws Exception {

  System.out.println("實現InitializingBean進行初始化");

  }

  @PostConstruct

  public void init() {

  System.out.println("使用註解初始化");

  }

  @PreDestroy

  public void destroymethod() {

  System.out.println("使用註解銷燬");

  }

  }

  xml配置檔案

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

  xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

  xsi:schemaLocation="http://www.springframework.org/schema/beans成都包皮過長要不要割?

  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

  http://www.springframework.org/schema/context

  http://www.springframework.org/schema/context/spring-context-3.0.xsd

  http://www.springframework.org/schema/aop

  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

  http://www.springframework.org/schema/tx

  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

  寫一個類進行測試

  package com.spring.test;

  import org.springframework.context.support.ClassPathXmlApplicationContext;

  import com.spring.InitOrDestory;

  public class InitOrDestoryTest {

  public static void main(String[] args) {

  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

  context.close();

  }

  }

  輸出結果

  十月 15, 2017 8:36:10 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh

  資訊: Refreshing org[email protected]9246bec: startup date [Sun Oct 15 20:36:10 CST 2017]; root of context hierarchy

  十月 15, 2017 8:36:10 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

  資訊: Loading XML bean definitions from class path resource [spring.xml]

  十月 15, 2017 8:36:10 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

  資訊: Pre-instantiating singletons in org.s[email protected]7b63e1f: defining beans [InitOrDest,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy

  使用註解初始化

  實現InitializingBean進行初始化

  xml配置檔案設定初始化

  十月 15, 2017 8:36:10 下午 org.springframework.context.support.AbstractApplicationContext doClose

  資訊: Closing org[email protected]9246bec: startup date [Sun Oct 15 20:36:10 CST 2017]; root of context hierarchy

  十月 15, 2017 8:36:10 下午 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons

  資訊: Destroying singletons in org.s[email protected]7b63e1f: defining beans [InitOrDest,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy

  使用註解銷燬

  實現DisposableBean進行銷燬

  xml配置檔案設定銷燬

相關推薦

Spring bean初始銷燬方式優先順序

  Spring bean的初始化和銷燬有三種方式   通過實現 InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;優先順序第二   通過 元素的 init-method/destroy-method屬性指定初始化之

Spring管理的bean初始方法的方式,以及@PostConstruct不起作用的原因

1:Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作

spring ioc---定製bean初始銷燬時的回撥函式

約莫有4種方式定製bean初始化和銷燬時的回撥函式,如下表格. 方式 說明 使用beans標籤的屬性 beans標籤中,使用以下兩個屬性, `default-init-method`和`default-destroy-m

Spring Bean初始之後/銷燬之前執行指定方法

關於在spring  容器初始化 bean 和銷燬前所做的操作定義方式有三種: 通過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean之前進行的操作 通過 在xml中定義init-method 和  destory-metho

JAVAEE顛覆者,SpringBoot實戰一書學習小記(Bean的Scope,Bean的動態注入,Bean初始銷燬

Bean的Scope每一個bean可以新增Scope標籤來設定個人理解從此看出Spring的控制反轉預設一直都在用一個例項注入1.Singleton 一個Spring容器中只有一個Bean的例項,此為Spring的預設配置,全容器共享一個例項。2.Prototype 每次呼叫

spring(bean初始銷燬、注入,作用域)

IOC:控制反轉,也稱為依賴注入(DI)。這是一個過程。通常我們需要一個物件的時候,是主動建立物件,並且主動傳入到需要使用該物件的地方。而IOC則是由容器建立物件,注入到我們需要使用該物件的位置,兩者相比,一個主動,一個被動,被動的則是稱為依賴注入(控制反轉,由主動建立改為被動注入)。IO

JAVA中初始ArrayList的方式

  下面講一下ArrayList初始化的幾種不同方式。   一、最常用的初始化方式。 1 List<String> list1 = new ArrayList<String>(); 2 list1.add("apple"); 3 lis

spring boot初始資源的幾方式

轉自:https://www.jb51.net/article/145143.htm 實現 CommandLineRunner 介面,並實現它的 run() 方法,在該方法中編寫初始化邏輯 @Component public class MyCommandLineRun

結構體初始 訪問的方式(結構體指標)

輸出三個學生中成績最高的學生資訊 1>  #include<stdio.h> typedef struct student {     int num;     char name[10];     int score; } Student; int m

spring-bean生命週期之初始銷燬方式

1,註解bean之指定init-method/destroy-method 這種方式spring註解之@Bean註解,這邊再簡單演示如下: 配置類中增加一個bean如下: /** * 定義一個bean物件 * @return */

Spring bean初始銷燬方式執行順序

Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。 下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;

Spring學習筆記】4:做屬性連線的Annotation,指示初始銷燬方法的Annotation

屬性連線 屬性連線是指配置DI的方式,之前學了可以在<bean ...></bean>裡面使用<constructor-arg .../>和<property .../> 元素做屬性連線。 Spring裡還可以

Spring bean初始與銷毀的幾方式區別

pack ack 構造 rop struct service() throws esc println 1. <bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷毀之前調用的操作方法 2. 指定方法上加上@PostC

spring系列】之6:bean初始銷燬方法

bean的生命週期:bean建立---初始化----銷燬的過程 容器管理bean的生命週期:我們可以自定義初始化和銷燬方法;容器在bean進行到當前生命週期的時候來呼叫我們自定義的初始化和銷燬方法 構造(物件建立): 單例項:在容器啟動的時候建立物件 多例項:在每次獲

Spring Bean初始銷燬方式詳解

最近在專案中需要封裝kafka的服務,其中使用到了工廠模式,該模式涉及到了Spring Bean的初始化和銷燬,如是研究了一番,總結如下,和大家共勉之 Spring Bean的初始化和銷燬Bean有幾種方法了?答案是3種 方法一:使用@PostConstruct註解初始化,

Spring框架, bean的生命週期中,初始銷燬.

我們可以配置bean的初始化和銷燬前的方法, 有三種方法:1,在配置檔案中的<beans>標籤中配置default-init-method="defautInit" default-destroy-method="defaultDestroy"然後在bean中去寫

Spring bean初始銷燬

另外一個方法讓bean實現Spring的InitializingBean和DisposableBean介面,InitializingBean的afterPropertiesSet()和DisposableBean的destroy()方法分別會在bean初始化和移除應

通過Spring @PostConstruct @PreDestroy 方法 實現初始銷燬bean之前進行的操作

關於在spring 容器初始化 bean 和銷燬前所做的操作定義方式有三種: 第一種:通過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean之前進行的操作 第二種是:通過 在xml中定義init-method 和 d

Spring】【Bean的scope屬性】【Bean初始銷燬方法】

Bean的scope屬性 在Spring容器中的物件,預設是單例的.如dao,service.單例可以提高效能 但是也需要每次獲取都要new一次Bean物件.如Struts2的 Action物件,每

Spring註解驅動開發】如何使用@Bean註解指定初始銷燬的方法?看這一篇就夠了!!

## 寫在前面 > 在【[String註解驅動開發專題](https://www.cnblogs.com/binghe001/category/1780611.html)】中,前面的文章我們主要講了有關於如何向Spring容器中註冊bean的知識,大家可以到【[String註解驅動開發專題](http