gpt4 book ai didi

spring - @PostConstruct 方法在 flyway 之前运行

转载 作者:行者123 更新时间:2023-12-05 04:04:44 26 4
gpt4 key购买 nike

我知道以前有人问过这种问题。我有一个用@PostConstruct 注释的方法。这些方法假定所有 Flyway 脚本都已在调用之前 执行。似乎 Flyway 也使用了 @PostConstruct 注释方法,并且这些方法在我的方法之后被调用。我尝试用 @DependOn 和不同的 flyway beennames 来注释我的方法。不幸的是没有成功。谁能帮帮我。

最佳答案

解决方案:

我会设置对 FlywayMigrationInitializer 的依赖在构造函数中。创建并设置初始化程序后,将运行迁移。

或者您可以依赖于 flywayInitializer bean (@DependsOn("flywayInitializer"))。该 bean 名为 flywayInitializer,属于 FlywayMigrationInitializer 类,它是在 FlywayAutoConfiguration.java 中创建的.

FlywayMigrationInitializer实现了InitializingBean,并在afterPropertiesSet方法中调用了migrate方法。

示例:

@Component
// @DependsOn("flywayInitializer")
@Slf4j
public class TestPostConstruct {

public TestPostConstruct(FlywayMigrationInitializer flywayForceInitialization) {
}

@PostConstruct
public void testPostConstruct() {
log.info("----> in testPostConstruct");
}
}

Spring Boot 日志:

INFO 4760 --- [main] o.f.core.internal.command.DbMigrate      : Successfully applied 1 migration to schema "PUBLIC" (execution time 00:00.130s)
INFO 4760 --- [main] c.example.flywayinit.TestPostConstruct : ----> in testPostConstruct

关于spring - @PostConstruct 方法在 flyway 之前运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52127121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com