728x90
반응형
스프링부트에서는 시작 시점에 특정코드를 실행하기 위해 CommandLineRunner와 ApplicationRunner를 제공한다.
두 개의 Runner인터페이스 중에 하나를 이용해 run메서드를 오버라이드해서 빈으로 등록하면 사용이 가능하다.
CommandLinerRunner
functional interface로 람다식으로도 사용이 가능하다.
빈으로 등록해야 사용이 가능하다.
여러개의 CommandLineRunner를 빈으로 등록할 수 있으며 @Order를 통해 순서를 지정할 수 있다.
argument는 배열로 전달된다.
스프링부트가 구동되면서 컴포넌트 스캔을 통해 빈을 등록하고 run()메소드를 실행한다.
사용방법
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public CommandLineRunner commandLineRunner() {
return args -> {
for(String s : args) {
System.out.println("s : " + s);
}
};
}
}
@SpringBootApplication에 @Configuration이 있기 때문에 여기에 @Bean을 선언해서 사용할 수 있다.
프로그램 파라미터로 값을 전달하면 확인할 수 있다.
단순 배열로 전달하고 문자열만 전달할 수 있다.
ApplicationRunner
마찬가지로 functional interface로 람다식 메서드를 사용할 수 있다.
CommandLineRunner보다 좀 더 다양한 형태로 argument를 전달할 수 있다.
@Bean
public ApplicationRunner applicationRunner() {
return args -> {
System.out.println("nonoption : " + args.getNonOptionArgs());
System.out.println("option: " + args.getOptionNames());
for(String key : args.getOptionNames()) {
System.out.println( key + " : " + args.getOptionValues(key));
}
};
}
key와 value를 지정해서 사용할 수 있다.
728x90
반응형
'Spring' 카테고리의 다른 글
Spring boot netty access log 남기는 방법 (0) | 2024.01.12 |
---|---|
Spring Actuator 란 무엇일까 (0) | 2023.10.29 |
Spring WebFlux 란 무엇일까 (0) | 2023.08.10 |
Spring @RequestMapping multi request 요청받기 (0) | 2023.02.22 |
Spring boot multiple database 설정 (mybatis+hikari) (0) | 2022.06.09 |