软件编程
位置:首页>> 软件编程>> java编程>> Spring Bean的初始化和销毁实例详解

Spring Bean的初始化和销毁实例详解

作者:cakincqm  发布时间:2023-10-28 05:56:04 

标签: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程序设计有所帮助。

来源:https://blog.csdn.net/chengqiuming/article/details/81462108

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com