티스토리 뷰
프로그래밍/Spring
[Spring Boot] 애플리케이션 실행 후 특정 코드를 수행하는 방법 (Application Runner 사용법)
rlawlstjd007 2020. 3. 25. 19:49들어가며
-
필요에 따라 스프링부트 애플리케이션이 처음 실행되고 난 시점에 특정한 코드나 동작을 수행하고자 할 때가 있다.
-
이때 사용할 수 있는 Application Runner, Command Line Runner를 알아보고자 한다.
ApplicationRunner
-
SpringBootApplication이 포함된 프로그램에서 특정 Bean을 Application 실행 후 실행하도록 하는 인터페이스이다.
-
메소드는 run이라는 메소드뿐이며 ApplicationArguments를 받도록 되어 있다.
-
ApplicationArguments란 프로그램 실행시 명시되는 argument를 추상화된 API를 통해서 접근할 수 있는 인터페이스이다.
-
자세한 내용은 아래 포스트 참고
-
-
사용법은 아래와 같이 실행하고자 하는 클래스를 Application Runner 인터페이스를 구현하도록 하여 만들어준다.
-
Bean 등록은 필수
-
@Component
public class AppStartupRunner implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(AppStartupRunner.class);
@Override
public void run(ApplicationArguments args) throws Exception {
logger.info("Your application started with option names : {}", args.getOptionNames());
}
}
Command Line Runner
-
Application Runner와 동일한 기능을 제공하는 인터페이스이다.
-
다만 다르다는 점이 있다면 ApplicationArguments 대신에 기본적인 Array 형태로 argument를 받게 되어 있다.
-
그래서 Application Runner를 사용하길 추천함
-
@Component
public class CommandLineAppStartupRunner implements CommandLineRunner {
private static final Logger logger = LoggerFactory.getLogger(CommandLineAppStartupRunner.class);
@Override
public void run(String...args) throws Exception {
logger.info("Application started with command-line arguments: {} . \n To kill this application, press Ctrl + C.", Arrays.toString(args));
}
}
Order
-
만약 Runner가 여러개 일때 각각의 실행 순서를 지정할 수가 있다.
-
@Order 어노테이션을 사용해서 지정을 해주며 낮은 숫자부터 순차적으로 실행이 된다.
@Component
@Order(1)
public class FirstRunner implements CommandLineRunner {
@Override
public void run(String...args) throws Exception {
//제일 먼저 실행됨
}
}
@Component
@Order(2)
public class SecondRunner implements CommandLineRunner {
@Override
public void run(String...args) throws Exception {
//그 다음으로 실행됨
}
}
끝으로
이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
[SpringBoot] Application 실행시 다양한 시점의 Event Listener 등록하는 방법 (0) | 2020.04.07 |
---|---|
[SpringBoot] properties 파일 정의된 프로퍼티 클래스로 묶어서 사용하는 방법 (@ConfigurationProperties 사용) (0) | 2020.04.06 |
[Spring Boot] ApplicationArguments 사용법 (0) | 2020.03.25 |
[Spring Boot] 디버그 모드 실행 방법 및 디버그 레벨 로그 출력 설정 방법 (0) | 2020.03.21 |
[Spring Boot] "MismatchedInputException" 발생시 해결방법 (0) | 2020.03.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 자전거
- 자전거 여행
- springboot
- 일본 배낭여행
- JavaFX 테이블뷰
- JavaFX 종료
- 텐트
- 이펙티브 자바
- 일본 자전거 여행
- effective java
- 일본여행
- 이펙티브자바
- intelij
- effectivejava
- 일본 여행
- 인텔리제이
- git
- 배낭여행
- Java UI
- 스프링부트
- 이펙티브
- windows
- TableView
- JavaFX
- JavaFX Table View
- 배낭 여행
- java
- JavaFX Window Close
- 자바
- 방통대 과제물
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함