하이 ~~!!
Spring 으로 어떤 서비스를 올리다보면 구동시 바로 실행이 되었으면 하는 코드들이 있을거다.
그걸 할수 있는 방법을 소개해드리겠다.
스프링부트에서는 어플리케이션이 구동될 때 코드를 실행시키는 2가지 방법을 제공한다.
CommandLineRunner 와 ApplicationRunner 인데 바로 예를들어 보여드리겠다.
1. CommandLineRunner
1
2
3
4
5
6
7
8
9
10
11
|
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class TestCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("1.command line runner");
}
}
|
이 코드를 작성하고 jar를 구동해보면 아래와 같은 결과가 나온다.
2.ApplicationRunner
1
2
3
4
5
6
7
8
9
10
11
12
|
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class TestApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("2.application runner");
}
}
|
이 코드 역시 구동해보면 아래의 결과를 확인해볼 수 있다.
그럼 .. 두가지 인터페이스의 차이점은 무엇일까? 다들 코드를 보시면 아시겠지만 바로 파라미터이다.
CommandLineRunner의 경우 스트링 배열이 파라미터로 들어오지만 ApplicationRunner의 경우 스트링 배열을 포함한 더 많은 데이터를 받아 올 수 있는 ApplicationArguments 타입의 객체가 파라미터로 넘어온다.
아..! 그리고 마지막으로 이거 하나만 알아두자..!
이 Runner 의 경우 여러 개가 있어도 된다. 그런데 .. 여러개가 있으면 그 순서를 정해줘야하지 않겠는가!
순서를 정해주는 방법은 @Order Annotation을 이용해주면 된다.
@Order(1)
@Component
public class TestCommandLineRunner implements CommandLineRunner {
@Order(2)
@Component
public class TestApplicationRunner implements ApplicationRunner {
이 코드 역시 작성해놓고 jar를 구동해보면 ..!
이렇게 순서를 정해준대로 결과가 나오는 것을 확인할 수 있다.
그럼 다들 필요하시면 이 코드 잘 응용해서 사용하시길 바란다. 즐거운 코딩하자~~
반응형
'Develop > Spring' 카테고리의 다른 글
[JPA] Spring boot 에 JPA 코딩하기 위한 기본적인 세팅 (1) | 2020.06.07 |
---|---|
[Spring] Spring boot 에 올릴 적절한 라이브러리 버전 찾기 (0) | 2020.05.31 |
[Spring] Spring에서 예외 처리하기 (1) | 2020.04.05 |
[Spring] Spring 에서 로그 남기기 (0) | 2020.04.05 |
[Spring] Spring AOP 이용하기 (0) | 2020.04.05 |
댓글