봄 부팅 - 응용 프로그램 시작 전에시 / 코드를 실행하는 올바른 방법은?

SiriusBits :

시작에 봄 부트 웹 응용 프로그램의 로직을 구현하는 방법에 대한 의견을 다른 것 같다. 그러나 "가장 좋은 방법"에 합의하거나 등 다른 이상 선호하는 방법

나는 다음과 같은 코드가 그 구현 (일부 더미 출력) 시작시 ApplicationRunner 인터페이스 :

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를 사용하여 저장하고, 비트를 "초기화"몇 가지 다른.

이 보인다 hackish 그렇게하지 않도록 깨끗한 또는 이것에 대해 갈 수있는 더 적절한 방법이 있는지.

LppEdd :

ApplicationRunnerCommandLineRunner올바른 인터페이스 시동시 의존성 주입이 필요한 비즈니스 로직을 실행하기 위해 구현된다. 둘 사이에 큰 차이가 없습니다.

CommandLineRunner당신에게 원료에 액세스 할 수 있습니다 String시작시에 전달 된 매개 변수의 배열을.
ApplicationRunner당신에게 줄 것이다 좀 더 구조화 ApplicationArguments,하지만 그게 다야.

여러 시작 주자를 가질 수 있습니다, 당신은 심지어 주문할 수 있습니다.


이 hackish 보인다

아니, 아니에요. ApplicationRunnerCommandLineRunner의 JavaDoc

인터페이스는이 안에 포함 된 경우 빈 실행해야 함을 표시하는 데 사용 SpringApplication.

추천

출처http://43.154.161.224:23101/article/api/json?id=210723&siteId=1