springboot中bean的几种初始化方法与销毁方法的执行顺序

阻容降压 vs 开关电源:5V小功率供电方案成本与安全深度对比 本文深度对比了阻容降压电路与开关电源在5V小功率供电方案中的核心差异。重点剖析了二者在成本、体积、效率、温升及安全隔离等方面的优劣,并结合智能温控器、LED驱动等典型应用场景,为硬件工程师提供了清晰的选型决策框架,帮助在成本与安全之间做出最佳权衡。 阅读详情

初始化方法:

1、实现InitializingBean,重写afterPropertiesSet方法

2、直接使用initBean方法,需要指定init-method

3、使用@PostConstruct注解

   private String name;

    /**
     * 构造方法
     * @param name
     */
    public InitSortTest(String name) {
        this.name = name;
        System.out.println("InitSortTest name = [" + name + "]");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean afterPropertiesSet 执行");
    }

    public  void initBean(){
        System.out.println("initBean  执行");
    }

    @PostConstruct
    public void postConstruct() {
        System.out.println("@PostConstruct 执行");
    }

销毁方法:

1、实现 DisposableBean,重写destroy方法;

2、直接使用destroy方法,需要指定destroy-method

3、使用@PreDestroy注解


    @Override
    public void destroy() throws Exception {
        System.out.println("DisposableBean destroy 执行");
    }

    public void destroyBean() {
        System.out.println("destroyBean 执行");
    }

    @PreDestroy
    public void preDestroy() {
        System.out.println("@PreDestroy 执行");
    }

创建配置类

@Configuration
public class InitConfig {

    @Bean(initMethod = "initBean",destroyMethod = "destroyBean")
    public  InitSortTest  initSortTest() {
        return new InitSortTest("测试");
    }

}

启动服务

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(DemoApplication.class, args);
        InitSortTest initSortTest = configurableApplicationContext.getBean(InitSortTest.class);
        configurableApplicationContext.close();
    }
}

运行结果如下图:

我们可以得出

初始化顺序:构造方法 → @PostConstruct → afterPropertiesSet → initBean。

销毁顺序   :@PreDestroy → DisposableBean destroy → destroyBean

通过源码我们也可以看得出具体的顺序

首先通过debug我们发现@PostConstruct 是在 BeanPostProcessor的前置处理中执行的,所有优先级很高。

然后afterPropertiesSet 与initbean的执行顺序源码中也有描述

所有顺序也是很明显的。

此处注意,afterPropertiesSet的调用,是直接强制类型转换的调用,initbean是采用的反射机制。

点云最小二乘法拟合曲线 文章目录一、引言 一、引言 阅读详情

相关推荐

win10离线安装.NetFrameWork3.5出现0x800F081F解决办法。

由于公司开发环境是内网,并且安装arcgis10.2又需要.NetFrameWork3.5的环境,安装.NetFrameWork3.5的又总是报错“0x800F081F”找不到源文件。折腾了两天总算解决了。 首先我们能在网上搜索到的教程,你一定看到过这样的教程,就是使用下面的命令来进行安装。 dism /online /Enable-Feature /Featu...

AIGIS的博客 1万+

springboot异步调用@Bean的initMethod方法

springboot异步调用@Bean的initMethod方法

zhk 443

五子棋AI算法第一篇-我对谷歌Alphago的看法

最近Google宣布他们的围棋AI以5:0的战绩打败欧洲围棋三冠王。我一直对人工智能比较感兴趣,正好趁年前空闲的几天用JS写了一个五子棋的AI。其实很久以前就用自创的算法写过一个JAVA版的五子棋AI,不过棋力很不理想。这次用的是JS写的,所以无论任何平台上只要能打开网页的都可以玩。google爆出这个新闻之后,很多人觉得这是不是意味着电脑智商已经在人类之上了,围棋已经没有意义了之类的。甚至觉得这是

言川的博客 2万+

Springboot 初始化bean时初始化一些方法

我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。这时候可以考虑在bean被加载时执行一些方法;经验优先想到了二种方法; 方法一 init方法方法bean对象初始化时实现方法 方法二 实现InitializingBean InitalizingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。 那么二种方法都是在bean对象被初始化的时候执行的先后顺序如何呢 话不多说上代码

lhz121的博客 2527

S7-1200控制S120变频器

②:硬件目录下,添加实物S120设备进行组态(其它现场设备--PROFINET IO--DRIVES......②:双击S120进行IP地址和设备名称设置(注:此处要与STATER软件设置S120一致)M10.0接通时,电机开始运行,M10.0断开,电机停止,调试完成。①:将S7-1200与S120进行通讯连线。④:STATER软件下设置与组态一致的报文。①:点击添加新设备,按实物进行设备组态。②:打开OB1,编写启动停止程序。①:查看S120报文地址。②:模块下添加DO矢量。③:子模块下添加报文。

weixin_38261173的博客 4867

绕过卡巴斯基通过RPC控制lsass注入DLL

参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通...

2ed 3522

SpringBoot启动时初始化数据的几种方式

前言 在我们用springboot搭建项目的时候,经常碰到在项目启动时初始化一些字典数据、地市数据、等各类需求,针对这种需求springboot为我们提供了以下几种方案供我们选择: - ApplicationRunner与CommandLineRunner接口 - Spring Bean初始化的init-method、PostConstruct注解、 InitializingBean、BeanPostProcessor接口 - Spring的事件机制: 实现 ApplicationListener 接口

u012272367的博客 7978

Window系统下搭建GIT本地服务器

这是一篇在window下搭建git本地服务器的教程,带你一步步搭建出本地的git服务器。

qwer971211的博客 2万+

SpringBoot之@Bean 注解全解析

随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为Spring中最核心的bean当然也能够使用注解的方式进行表示。

白话机器学习 4772

手把手教你用ET-BERT预训练模型搞定加密流量分类(附完整代码)

本文详细介绍了如何使用ET-BERT预训练模型实现加密流量分类,包括环境配置、数据预处理、模型微调及优化策略。通过实战代码示例,帮助开发者快速掌握这一技术,提升网络安全领域的加密流量分析能力。

weixin_29166013的博客 493

Openclaw错误排查及解决方案之:Previous run is still shutting down. Please try again in a moment.

Openclaw错误排查及解决方案之:Previous run is still shutting down. Please try again in a moment.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 231

【Spring源码系列】Bean生命周期-Bean销毁

Spring给我们提供了一种当的方式。那么,Spring底层到底是如何实现的呢?接下来,我们将从源码+案例的方式来解析:spring如何实现当bean销毁时调用某个方法的。当的时候(调用close())方法的时候,那么对于实现destroy方法的bean,就会开始执行各自自定义的销毁逻辑。提示: 是spring容器关闭的时候调用bean销毁逻辑,不是垃圾回收、程序意外终止、程序正常终止…的时候。1、。在‘初始化后’会对BeanDefinition进行判断,判断该BeanDefinition是否具备destr

qq_43783527的博客 4778

小龙虾OpenClaw卸载全攻略,彻底清理缓存和配置,干净无残留!

不想要的小龙虾OpenClaw怎么彻底卸载?🦞本文教你如何彻底的卸载OpenClaw⚡️,Windows/macOS/Linux通用,干净无残留🧹

XiaoqiangClub的博客 310

SpringBoot里的Bean的初始化与销毁顺序

我今天学习到SpringBoot里面自定义Bean的初始化与销毁方法,我先总结一下我学到的四种方法: 方法一: 指定init-method 和 destory-method 方法二: 通过让 Bean 实现 InitializingBean 接口,定义初始化逻辑                                              DisposableBean 接口,定义销毁...

qq_41075649的博客 5996

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【SpringBoot】Bean初始化/销毁多种姿势

日常开发过程有时需要在应用启动之后加载某些资源,或者在应用关闭之前释放资源。Spring 框架提供相关功能,围绕 生命周期,可以在 创建过程初始化资源,以及销毁 过程释放资源。Spring 提供多种不同的方式初始化/销毁 ,如果同时使用这几种方式,Spring 如何处理这几者之间的顺序?首先我们先来回顾一下 Spring 初始化/销毁 几种方式,分别为: PS: 其实还有一种方式,继承 Spring 接口。不过这种方式比较繁琐,这里就不再分析。这种方式在配置文件文件指定初始化/销毁方法。

精益求精 1647

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring中Bean的几种实现初始化(或销毁)的方式及其执行顺序

声明:本文测试环境为SpringBoot。 提示:本文以图片说明为主,文字版的测试代码,可见文末的代码托管链接。 有时,我们需要在bean创建后(或者bean销毁前),做一些事情,方式方法有很多,下面介绍如何通过【初始化/销毁相关方法】来达到我们的目的。 常用初始化后(或销毁前)做逻辑的方式: 实现InitializingBean接口、DisposableBean接口。 ...

JustryDeng 1113

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring中初始化bean和销毁bean的时候执行某个方法的详解

转载来源:https://blog.youkuaiyun.com/ilovesmj/article/details/51261033 关于在spring容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过注解@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 [java]view plaincopy importjavax...

qq_35939148的博客 1143

Spring中Bean初始化和销毁的多种方式

详细介绍多种初始化Bean和销毁Bean的方式

初心不忘、始终方得 2476

springboot:bean常用初始化方法与销毁执行方法

bean常用初始化方法与销毁执行方法

Gu31415的专栏 1542

Spring bean初始化及销毁你必须要掌握的回调方法

spring bean在初始化和销毁的时候我们可以触发一些自定义的回调操作。 初始化的时候实现的方法 1、通过java提供的@PostConstruct注解; 2、通过实现spring提供的InitializingBean接口,并重写其afterPropertiesSet方法; 3、通过spring的xml bean配置或bean注解指定初始化方法,如下面实例的initMethod方法通过@bean注解指定。 销毁的时候实现的方法 1、通过java提供的@PreDestroy注释; 2、通过实现s.

Java技术栈,分享最主流的Java技术 1123

关于Spring 里面Bean的几种初始化、销毁方法(init, destroy)

常用的Spring Bean如何指定其初始化和销毁前的方法有以下几种: 1. @PostConstruct @PreDestroy注解方式 @PostConstruct public void init(){ } @PreDestroy public void destroyAn(){ } 2. 实现 InitializingBean 和 Dis...

gzt19881123的专栏 653

spring注解配置bean的初始化方法和销毁方法

本篇我们讲解下spring项目中如何为bean指定初始化方法和销毁方法。当spring完成bean的属性赋值之后,就会执行bean的初始化方法,而当spring要销毁bean实例的时候,也会调用bean的销毁方法。我们可以在初始化方法中做一些资源加载的操作,比如缓存数据到redis。而在销毁方法中,可以做一些资源释放的操作,比如删除redis缓存数据、释放数据库连接等。由于我们现在很少写spring的xml文件,所以这次就讲解通过注解的方式来指定bean的初始化方法和销毁方法。

m0_71777195的博客 432

spring初始化bean之后执行某个方法

比如我想在A类中控制B类(我的需求:B类在jar报中使用@Bean生成)的初始化,我用了BeanPostProcessor,发现A类先于B类实例化,可以使用@DependsOn 强制B类实例化。问题2: 可以使用 ApplicationListener 监控容器启动完成后。bean定义-实例化-初始化-销毁。注意: 这里的bean定义是指所有的bean定义完成,然后才继续执行,而实例化和初始化 单个bean 一次执行的。2. 所有bean初始化后执行?

yuanfangderen 1822

在Spring Bean的生命周期中各方法的执行顺序

Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下十种:通过实现 InitializingBean 接口来定制初始化之后的操作方法;通过实现DisposableBean 接口来定制销毁之前的操作方法;通过元素的 init-method属性指定初始化之后调用的操作方法;通过元素的 destroy-method属性指定销毁之前调用的操作方法;

chenzoff的专栏 446

Spring Bean设置初始化方法

1. 在指定方法上加@PostConstruct或@PreDestroy注解去指定该方法是在当前类初始化后还是销毁前执行 2. 实现InitializingBean接口重写afterPropertiesSet方法去执行初始化后调用方法,或实现DisposableBean接口重写destroy方法去执行销毁前调用方法 3. 在调用bean的方法上加注解@Bean(initMethod = "initMethod", destroyMethod = "destroyMethod")...

Lucifer ZHAO 1925

高级Spring之初始化与销毁顺序

高级Spring之初始化与销毁顺序

qq_61313896的博客 286
上一篇: springboot框架项目配置文件外置方法
下一篇: nginx将http协议代理为https 附带ws升级为wss
哲文云
博客等级 码龄15年 6粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值