스프링부트 - Runners
스프링 부트가 구동되는 시점에 특정 코드를 실행 시키기 위해서는
Command Line Runner와 Application Runner를 이용할 수 있습니다.
두 Runner는 스프링 부트에서 제공되는 인터페이스입니다.
Maven 의존성 라이브러리
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>
1. CommandLineRunner
1-1. CommandLineRunner 예제
DemoApplication.java
package com.developer.hive.demo; import java.util.Arrays; import java.util.stream.Collectors; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(String... args) throws Exception { // TODO Auto-generated method stub String argsArray = Arrays.stream(args).collect(Collectors.joining(",")); System.out.println("CommandLineRunner 시작 : args = " + argsArray); } }
1-2. STS Run Configurations...
실행환경을 설정하기위 Run > Run Configurations... 메뉴를 클릭하여 줍니다.

1-3. STS Run Configurations > Arguments
Arguments 탭에서 a b c 값을 넣어주고 Run 버튼을 클릭

1-4. 결과

자세히 보시면 Arguments 탭에서 입력한 값 앞쪽에 입력하지 않은 --spring.output.ansi.enabled=always
값이 보입니다.
STS Run Configurations...

ANSI console output 버튼을 클릭 해제해 줍시다.
결과

이제서야 Arguments에 입력한 a b c 값만 출력이 되었습니다.
ANSI 콘솔이 해제되어 컬러가 없지만 --spring.output.ansi.enabled=always
문자열 값이 들어가지 않습니다.
2. ApplicationRunner
2-1. ApplicationRunner 예제
package com.developer.hive.demo; import java.util.List; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication implements ApplicationRunner { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub List<String> argsList = args.getNonOptionArgs(); System.out.println("ApplicationRunner 시작 : args = " + argsList.toString()); } }
2-2. STS Run Configurations > Arguments
Arguments 탭에서 x y z 값을 넣어주고 Run 버튼을 클릭

2-3. 결과

Arguments x y z 값이 출력되었습니다.
3 @Order 어노테이션
3-1. @Order 어노테이션 예제
package com.developer.hive.demo; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; @SpringBootApplication public class DemoApplication { @Order(1) @Configuration public class TestCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { // TODO Auto-generated method stub String argsArray = Arrays.stream(args).collect(Collectors.joining(",")); System.out.println("CommandLineRunner 시작 : args = " + argsArray); } } @Order(3) @Configuration public class TestCommandLineRunner1 implements CommandLineRunner { @Override public void run(String... args) throws Exception { // TODO Auto-generated method stub String argsArray = Arrays.stream(args).collect(Collectors.joining(",")); System.out.println("CommandLineRunner1 시작 : args = " + argsArray); } } @Order(2) @Configuration public class TestApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub List<String> argsList = args.getNonOptionArgs(); System.out.println("ApplicationRunner 시작 : args = " + argsList.toString()); } } @Order(4) @Configuration public class TestApplicationRunner1 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { // TODO Auto-generated method stub String[] argsList = args.getSourceArgs(); System.out.println("ApplicationRunner1 시작 : args = [" + Arrays.stream(argsList).collect(Collectors.joining(", "))+"]"); } } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3-2. 결과

@Order 어노테이션 예제 순서대로 실행된것을 확인할 수 있습니다.
'Spring Boot > 개발환경' 카테고리의 다른 글
스프링부트 H2 데이터베이스 (0) | 2019.04.08 |
---|---|
스프링부트 Maven 프로젝트 Import 하기 (0) | 2019.04.08 |
STS 다운로드 및 설치 (1) | 2019.04.05 |
start.spring.io를 이용한 스프링 부트 프로젝트 생성 (0) | 2019.03.27 |