Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring初始化开始时初始化Springbean?_Java_Spring_Initialization - Fatal编程技术网

Java 如何在Spring初始化开始时初始化Springbean?

Java 如何在Spring初始化开始时初始化Springbean?,java,spring,initialization,Java,Spring,Initialization,我想在我的Spring Boot应用程序中使用,在初始化时从SQLalter文件更新/初始化数据库。处理Flywaydb的Java代码应该在创建Springdatasource之后(Flywaydb需要javax.sql.datasource)但在初始化应用程序bean之前执行。我知道@DependsOn我不想避免在所有应用程序bean上设置这个 有什么方法可以按照指定的顺序初始化特定的bean吗?如果您希望在应用程序准备启动时bean回调只发生一次,那么所有bean都准备好了,并且在刷新上下文

我想在我的Spring Boot应用程序中使用,在初始化时从
SQL
alter文件更新/初始化数据库。处理Flywaydb的Java代码应该在创建Spring
datasource
之后(Flywaydb需要
javax.sql.datasource
)但在初始化应用程序bean之前执行。我知道
@DependsOn
我不想避免在所有应用程序bean上设置这个


有什么方法可以按照指定的顺序初始化特定的bean吗?

如果您希望在应用程序准备启动时bean回调只发生一次,那么所有bean都准备好了,并且在刷新上下文时不会再次被调用,那么一个好的Spring引导方法就是使用
ApplicationReadyEvent
,如下所示:

@EventListener(ApplicationReadyEvent.class)
public void onApplicationEvent(ApplicationReadyEvent event) {
  // do tasks that should happen once on startup
}

别做什么特别的事。弹簧靴已经损坏。只有3个步骤可以采取

  • 添加为依赖项
  • 将迁移脚本放入
    src/main/resources/db/migration
  • 启动您的应用程序

  • 您不需要添加注释、创建bean或使用回调。Spring团队已经想到了这一点

    不,我需要在所有其他bean准备好之前调用我的代码,因为这取决于我之前需要实现的实际DB结构?我自己使用了
    应用程序StartedEvent
    来检索其余上下文所依赖的关键数据。不要。。。Flyway采用弹簧靴提供开箱即用的支持,您无需为此做任何特殊的事情。通过尝试围绕框架工作,您基本上使它变得更加复杂。看到完美!工作起来很有魅力。