spring的配置bean完成任务后如何自动销毁【springboot】

硅谷探秘者 3661 0 0

        有时项目在初始化是会有一些配置类(bean) 加入ioc容器,在项目加载完成后该bean就没有用了,可以从ioc容器中销毁。具体如下:

bean

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Test  implements CommandLineRunner,DisposableBean  {
	
	@Autowired  
    private ApplicationContext context; //注入ApplicationContext
	
	@Override
	public void run(String... args) throws Exception {
		// TODO Auto-generated method stub
		// do 
		DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory)context.getAutowireCapableBeanFactory();
		Test t=(Test) defaultListableBeanFactory.getBean("test");//获取并打印
		System.err.println(t);
		defaultListableBeanFactory.removeBeanDefinition("test");//销毁自己
	}

	@Override
	public void destroy() throws Exception {
		// TODO Auto-generated method stub
		System.err.println("销毁");
	}
}


这样项目在启动的时候会执行run方法,执行完run方法后即可销毁自身

启动时打印:

image.png

销毁后如果再次获取bean就会发生错误:

image.png



评论区
请写下您的评论...
暂无评论...
猜你喜欢
spring/springmvc 2443 创建一个MarkControllerMarkController类上有@RestController注解importorg.springframework.web.bind.annotation.RestController;/***@ClassNameMarkController*@Description:TODO*@AuthorJiajiajia*@VersionV1.0**/@RestCon
jenkins,软件使用 1425 -Git一、新建填写名字,选择Freestyleproject点击确定二、General在General中,填写描述。可以点击高级,选中“使用定义工作空间”选项,工作目录
java项目 1394 springboot+mybatis多数据源并利用aop实现切换(demo)
weblog 2244 类importjavax.servlet.ServletContext;importjavax.servlet.annotation.WebListener
java基础,springboot 1358 。 二、springboot  要将程序注册,必须保证jar有执行(下面例子中x)权限,否则服无法启。 SystemVInit服  SystemVInit服都在目录/etc
框架 1654 springboot+mybatis多数据源并利用aop实现切换1.项目大致结构2.pom依赖dependencygroupIdorg.springframework.boot
official 2414   BeanPostProcessor是SpringIOC容器给我们提供一个扩展接口。,他作用主要是果我们需要在Spring容器Bean实例化、和其他初始化前添加一些逻辑处
official 598   Bean生命周期描述Spring中一个Bean创建过程和过程中所经历步骤,其中Bean创建过程是重点。程序员可以利用Bean生命周期机制对Bean进行定义加工。
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。