springboot Bean的初始化和销毁
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
在我们实际开发的时候,经常会遇到在Bean在使用之前或者之后做些必要的操作,Spring对Bean的生命周期的操作提供了支持。
在使用Java配置和注解配置下提供如下两种方式:
(1)Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destory-method)。
(2)注解方式:利用JSR-250的@PostConstruct和@PreDestroy。
导入依赖,增加JSR250支持。
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
使用@Bean形式的Bean
NormalBean.java
package com.shrimpking;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/6/7 22:21
*/
public class NormalBean
{
public void init()
{
System.out.println("NormalBean-init");
}
public NormalBean()
{
super();
System.out.println("NormalBean-初始化构造函数");
}
public void destroy()
{
System.out.println("NormalBean-destroy");
}
}
使用JSR250形式的Bean
Jsr250Bean.java
package com.shrimpking;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/6/7 22:23
*/
public class Jsr250Bean
{
/**
* PostConstruct,在构造函数执行完之后执行。
*/
@PostConstruct
public void initMethod()
{
System.out.println("Jsr250Bean-initMethod");
}
public Jsr250Bean()
{
super();
System.out.println("Jsr250Bean-构造函数");
}
/**
* PreDestroy,在Bean销毁之前执行。
*/
@PreDestroy
public void destroyMethod()
{
System.out.println("Jsr250Bean-destroyMethod");
}
}
代码解释
①@PostConstruct,在构造函数执行完之后执行。
②@PreDestroy,在Bean销毁之前执行。
配置类
PostConfig.java
package com.shrimpking;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/6/7 22:27
*/
@Configuration
@ComponentScan("com.shrimpking")
public class PostConfig
{
/**
* initMethod和destroyMethod指定BeanWayService类
* 的init和destroy方法在构造之后、Bean销毁之前执行。
* @return
*/
@Bean(initMethod = "init",destroyMethod = "destroy")
NormalBean normalBean()
{
return new NormalBean();
}
@Bean
Jsr250Bean jsr250Bean()
{
return new Jsr250Bean();
}
}
代码解释
①initMethod和destroyMethod指定BeanWayService类的init和destroy方法在构造之后、Bean销毁之前执行。
运行
package com.shrimpking;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@SpringBootApplication
public class Springboot44InitmethodApplication
{
public static void main(String[] args)
{
//SpringApplication.run(Springboot44InitmethodApplication.class, args);
AnnotationConfigApplicationContext context
= new AnnotationConfigApplicationContext(PostConfig.class);
NormalBean normalBean = context.getBean(NormalBean.class);
Jsr250Bean jsr250Bean = context.getBean(Jsr250Bean.class);
context.close();
}
}
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |