1. 程式人生 > 程式設計 >Spring Bean的初始化和銷燬例項詳解

Spring Bean的初始化和銷燬例項詳解

本文例項講述了Spring Bean的初始化和銷燬。分享給大家供大家參考,具體如下:

一 點睛

在開發過程中,經常遇到在Bean使用之前或者之後做一些必要的操作,Spring對Bean的生命週期的操作提供了支援。

1 Java配置方式:使用@Bean的initMethod和destroyMethod。

2 註解方式:利用JSR-250的@PostConstruct和@PreDestroy。

二 實戰

1 增加JSR250支援

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>jsr250-api</artifactId>
  <version>1.0</version>
</dependency>

2 使用@Bean形式的Bean

package com.wisely.highlight_spring4.ch2.prepost;
public class BeanWayService {
   public void init(){
      System.out.println("@Bean-init-method");
    }
    public BeanWayService() {
      super();
      System.out.println("初始化建構函式-BeanWayService");
    }
    public void destroy(){
      System.out.println("@Bean-destory-method");
    }
}

3 使用JSR250形式的Bean

package com.wisely.highlight_spring4.ch2.prepost;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class JSR250WayService {
  @PostConstruct //在建構函式執行之後執行
  public void init(){
    System.out.println("jsr250-init-method");
  }
  public JSR250WayService() {
    super();
    System.out.println("初始化建構函式-JSR250WayService");
  }
  @PreDestroy //在Bean銷燬之前執行
  public void destroy(){
    System.out.println("jsr250-destory-method");
  }
}

4 編寫配置類

package com.wisely.highlight_spring4.ch2.prepost;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.wisely.highlight_spring4.ch2.prepost")
public class PrePostConfig {
  //initMethod和destroyMethod指定BeanWayService類的
  //init和destroy方法在建構函式之後、Bean銷燬之前執行
  @Bean(initMethod="init",destroyMethod="destroy")
  BeanWayService beanWayService(){
    return new BeanWayService();
  }
  @Bean
  JSR250WayService jsr250WayService(){
    return new JSR250WayService();
  }
}

5 編寫主類

package com.wisely.highlight_spring4.ch2.prepost;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
  public static void main(String[] args) {
    AnnotationConfigApplicationContext context =
        new AnnotationConfigApplicationContext(PrePostConfig.class);
    BeanWayService beanWayService = context.getBean(BeanWayService.class);
    JSR250WayService jsr250WayService = context.getBean(JSR250WayService.class);
    context.close();
  }
}

三 測試

八月 06,2018 9:53:47 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
資訊: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f17ae12: startup date [Mon Aug 06 21:53:47 CST 2018]; root of context hierarchy
初始化建構函式-BeanWayService
@Bean-init-method
初始化建構函式-JSR250WayService
jsr250-init-method
八月 06,2018 9:53:47 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
資訊: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f17ae12: startup date [Mon Aug 06 21:53:47 CST 2018]; root of context hierarchy
jsr250-destory-method
@Bean-destory-method

更多關於java相關內容感興趣的讀者可檢視本站專題:《Spring框架入門與進階教程》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》

希望本文所述對大家java程式設計有所幫助。