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

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

本文实例讲述了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

标签:Spring,Bean
0
投稿

猜你喜欢

  • SpringMVC一步到位精通拦截器

    2023-11-25 01:47:45
  • Java针对封装数组的简单复杂度分析方法

    2022-12-22 03:28:58
  • Android入门之计时器Chronometer的使用教程

    2023-09-06 10:56:43
  • Java swing 图像处理多种效果实现教程

    2022-08-16 20:15:08
  • java 解决异常 2 字节的 UTF-8 序列的字节2 无效的问题

    2021-06-01 10:29:00
  • C#利用异或算法实现加密解密

    2022-08-15 14:48:51
  • Spring Boot整合Web项目常用功能详解

    2023-06-04 17:14:21
  • Java异常ClassCastException的解决

    2022-10-21 02:37:13
  • SpringBoot上传文件到本服务器 目录与jar包同级问题

    2022-01-27 07:15:41
  • Android常用的数据加密方式代码详解

    2022-07-24 14:30:06
  • Android自定义控件之刻度尺控件

    2022-05-14 07:37:13
  • 详解Java中的实例初始化块(IIB)

    2023-06-08 08:35:46
  • C#中实现网段扫描的代码

    2022-05-09 03:54:33
  • C#使用Json.Net进行序列化和反序列化及定制化

    2023-07-10 19:11:35
  • Spring Boot整合Swagger测试api构建全纪录

    2022-10-21 09:05:25
  • 浅谈Java编程中string的理解与运用

    2021-05-31 22:15:44
  • redisson分布式限流RRateLimiter源码解析

    2021-05-29 13:10:15
  • springboot+jwt+微信小程序授权登录获取token的方法实例

    2022-07-11 17:53:57
  • Android实现手势滑动多点触摸放大缩小图片效果

    2022-02-13 09:26:28
  • c语言中static修饰函数的方法及代码

    2023-08-26 15:46:21
  • asp之家 软件编程 m.aspxhome.com