我有一个基于Spring Boot 1.4.0的项目,使用了Liquibase。
在liquibase完成后执行方法是否可能?
是否像Bean Post Processor那样实现?
我的目标是在应用程序以开发模式启动时向数据库添加一些数据。在开发模式下,应用程序使用内存中的h2数据库,因此liquibase必须在我编写数据之前创建表。
我有一个基于Spring Boot 1.4.0的项目,使用了Liquibase。
在liquibase完成后执行方法是否可能?
是否像Bean Post Processor那样实现?
我的目标是在应用程序以开发模式启动时向数据库添加一些数据。在开发模式下,应用程序使用内存中的h2数据库,因此liquibase必须在我编写数据之前创建表。
Spring Boot自动配置了一个名为liquibase
的SpringLiquibase
bean。任何依赖于此bean的bean都将在Liquibase完成后创建。例如,您可以使用@PostConstruct
来填充数据库:
@Bean
@DependsOn("liquibase")
public YourBean yourBean() {
return new YourBean();
}
static class YourBean {
@PostConstruct
public void populateDatabase() {
System.out.println("This will be called after Liquibase has finished");
}
}
YourBean
和liquibase
在不同的线程上怎么办? 我有相同的用例,但这个解决方案对我不起作用。 有什么想法吗? - Amir Choubaniliquibase
bean在其他线程中初始化。 https://github.com/jhipster/jhipster/blob/master/jhipster-framework/src/main/java/io/github/jhipster/config/liquibase/AsyncSpringLiquibase.java - Amir ChoubaniSpringLiquibase
。 - Andy Wilkinson