Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 Boot-在应用程序启动期间/之前运行代码的正确方式?_Java_Spring_Spring Boot_Spring Mvc - Fatal编程技术网

Java Spring Boot-在应用程序启动期间/之前运行代码的正确方式?

Java Spring Boot-在应用程序启动期间/之前运行代码的正确方式?,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,对于在启动时在SpringBootWeb应用程序中实现逻辑,似乎有不同的观点。但在“最佳实践”或首选方式等方面没有达成共识 我有以下代码在启动时实现ApplicationRunner接口(带有一些虚拟输出): 这种方法是否被认为“合适”(因为没有更好的术语)?我的意图是运行一些代码,在启动时从数据库中获取值,使用Ehcache和其他一些“初始化”位将它们存储在数据库中 这似乎有点骇人听闻,因此不确定是否有更干净或更合适的方法来实现这一点。ApplicationRunner和CommandLine

对于在启动时在SpringBootWeb应用程序中实现逻辑,似乎有不同的观点。但在“最佳实践”或首选方式等方面没有达成共识

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

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


这似乎有点骇人听闻,因此不确定是否有更干净或更合适的方法来实现这一点。

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

CommandLineRunner
将允许您访问启动时传递的原始
String
参数数组。
ApplicationRunner
将为您提供更结构化的
ApplicationArguments
,但仅此而已

您可以有多个初创选手,甚至可以订购


这似乎有点刻薄

不,不是
ApplicationRunner
CommandLineRunner
JavaDoc

接口,用于指示bean在被包含时应运行 在
SpringApplication


@Sirius是的,这是每个人在生产中使用的;)
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++;
    }
}