시작에 봄 부트 웹 응용 프로그램의 로직을 구현하는 방법에 대한 의견을 다른 것 같다. 그러나 "가장 좋은 방법"에 합의하거나 등 다른 이상 선호하는 방법
나는 다음과 같은 코드가 그 구현 (일부 더미 출력) 시작시 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 그렇게하지 않도록 깨끗한 또는 이것에 대해 갈 수있는 더 적절한 방법이 있는지.
ApplicationRunner
및 CommandLineRunner
올바른 인터페이스 시동시 의존성 주입이 필요한 비즈니스 로직을 실행하기 위해 구현된다. 둘 사이에 큰 차이가 없습니다.
CommandLineRunner
당신에게 원료에 액세스 할 수 있습니다 String
시작시에 전달 된 매개 변수의 배열을.
ApplicationRunner
당신에게 줄 것이다 좀 더 구조화 ApplicationArguments
,하지만 그게 다야.
여러 시작 주자를 가질 수 있습니다, 당신은 심지어 주문할 수 있습니다.
이 hackish 보인다
아니, 아니에요. ApplicationRunner
과 CommandLineRunner
의 JavaDoc
인터페이스는이 안에 포함 된 경우 빈 실행해야 함을 표시하는 데 사용
SpringApplication
.