스프링부트 - 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 |