我知道以前曾问过这种问题。 我有一个用@PostConstruct注释的方法。 该方法假定在调用之前 已执行了所有Flyway脚本。 似乎Flyway还使用了@PostConstruct注释方法,这些方法在我的方法之后称为之后。 我试图用@DependOn和其他flyway benames注释我的方法。 不幸的是没有成功。有人可以帮我吗?
答案 0 :(得分:3)
解决方案:
我将在构造函数中设置对FlywayMigrationInitializer
的依赖。创建并设置初始化程序后,将运行迁移。
或者您可以依赖flywayInitializer
bean(@DependsOn("flywayInitializer")
)。 Bean被命名为flywayInitializer
类的FlywayMigrationInitializer
,并且是在FlywayAutoConfiguration.java
中创建的。
FlywayMigrationInitializer
实现InitializingBean
并在migrate
方法中调用afterPropertiesSet
方法。
示例:
@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