java—只有在第一次启动spring应用程序时才运行某些方法的最佳方法是什么?

jjjwad0x  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(289)

当应用程序第一次启动时,我只需要运行一些方法一次。在springjava/kotlin中有什么基本的方法可以做到这一点吗?
upd:第一次意味着我有一个新的应用程序,应该在启动时运行一些方法,但当我重新启动这个应用程序,我不希望它再次运行这个方法

ccgok5k5

ccgok5k51#

我建议您使用applicationreadyevent。根据文档,applicationreadyevent是一个:
尽可能晚地发布事件,以指示应用程序已准备好为请求提供服务。
因此,您可以实现自己的applicationlistener侦听applicationreadyevent,并仅在应用程序就绪时运行代码,例如:

@Component
@Order(0)
class CustomApplicationListener implements ApplicationListener<ApplicationReadyEvent> {

  @Override
  public void onApplicationEvent(ApplicationReadyEvent event) {
      // run your code
  }

}
a6b3iqyw

a6b3iqyw2#

您可以用@postconstruct注解您的方法(确保您已经生成了springbean)。
在该方法的开头,如果不继续使用该方法,可以检查项目目录中是否存在文件“dummy.txt”。最后创建文件“dummy.txt”。
您还可以在第一次启动java进程时添加属性,如下所示:

java -DfirstTime=true -jar myjar.jar

制造 firstTime 默认为false

相关问题