如何在@PostConstruct 工作之前执行方法?

Posted

技术标签:

【中文标题】如何在@PostConstruct 工作之前执行方法?【英文标题】:How To Execute method before @PostConstruct work?? 【发布时间】:2018-11-08 06:44:30 【问题描述】:

每当应用程序版本更新时,我都会尝试更新数据库架构。 有人说这不是一个好功能,但我想试试我是否使用它。

应用程序启动时我成功更新架构。

但是我必须更改架构更新的时间。并且介于Bean 对象 DI 完成之后@PostConstruct 工作之前之间。

不可能,就在@PostConstruct工作之前不管DI是否完成。

我该怎么做?

PS。与我正在制作的相比,我知道飞行路线具有类似的功能。但我想自己做类似的东西。

【问题讨论】:

我会用liquibase看看这个answer 【参考方案1】:

当spring bean被初始化时,spring保证所有的属性都会被注入(通过构造函数注入、setter注入或字段注入)

所以首先spring调用bean的构造函数 然后(如果尚未设置字段)它会尝试注入字段 只有在那之后,它才会调用@PostConstruct

所以你应该可以通过 bean 的 post-construct 方法访问数据库。

【讨论】:

以上是关于如何在@PostConstruct 工作之前执行方法?的主要内容,如果未能解决你的问题,请参考以下文章

@PostConstruct注解

@PostConstruct注解介绍

Spring@PostConstruct和@PreDestroy注解详解

SpringBoot启动后执行某个方法

记录一些注解的含义

PostConstruct注解原理说明