首页 > 解决方案 > 如何在没有@PostConsrtuct/init/@EventListener的情况下在Spring启动时运行一次方法?

问题描述

我有一个 Spring 应用程序,需要在启动时将文件从资源文件夹加载到外部 ftp 存储。所以应用程序正在启动->文件上传->应用程序启动成功->负责上传的bean被销毁。问题是我不想对某些bean使用@PostConsrtuct/init之类的东西,并且在我的上下文中有空闲的bean,它在启动时完成了他的工作。

我不想使用@EventListener 来侦听刷新上下文并运行逻辑,因为即使在启动后,该侦听器也会执行此上传每次上下文刷新的操作。

我的应用程序是纯 Spring 应用程序(不是 Spring Boot),所以我不能使用 CommandLineRunner/AppStartupRunner 接口。

是否可以设置一些运行一次方法并死掉的bean?

标签: javaspring

解决方案


好吧,我应该在发布问题之前检查 Spring App 中 CommandLineRunner 的行为。看起来 CommandLineRunner 即使不在 Spring Boot 应用程序中也能完美运行。所以 CommandLineRunner 完全符合我的所有需求。


推荐阅读