首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring在应用程序启动期间/之前运行代码的正确方法?

Spring在应用程序启动期间/之前运行代码的正确方法?
EN

Stack Overflow用户
提问于 2019-03-29 21:06:46
回答 1查看 2.1K关注 0票数 4

对于在Spring应用程序启动时实现逻辑,似乎有不同的看法。但在“最佳做法”或优先于其他方式等问题上没有达成共识。

我有以下代码在启动时实现ApplicationRunner接口(带有一些虚拟输出):

代码语言:javascript
复制
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class AppStartupRunner implements ApplicationRunner {

    public static int counter;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("Application started with option names : {}",
                args.getOptionNames());
        log.info("Increment counter");
        counter++;
    }
}

这种方法是否被认为是“适当的”(因为没有一个更好的术语)?我的目的是运行一些代码,以便在启动时从数据库中获取值,并使用Ehcache将它们存储在其中,以及其他一些“初始化”位。

这似乎有点麻烦,所以不确定是否有一个更干净或更合适的方法来解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 22:10:04

ApplicationRunnerCommandLineRunner是执行业务逻辑的正确接口,这需要在启动时注入依赖项。两者之间并没有太大的差别。

CommandLineRunner将允许您访问启动时传递的参数的原始String数组。

ApplicationRunner会给您一个更结构化的ApplicationArguments,但仅此而已。

你可以有多个新手,你甚至可以订购他们。

这听起来有点刺耳

不,不是的。ApplicationRunnerCommandLineRunner JavaDoc

接口,用于指示当bean包含在SpringApplication中时,它应该运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55425494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档