스프링 부트 개념과 활용
4. 스프링 부트 활용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-02-02-springapplication
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
2. SpringApplication 2부
ApplicationEvent 등록
ApplicationContext를 만들기 전에 사용하는 리스너는 @Bean으로 등록할 수 없다
SampleListner 작성
ApplicationStartingEvent 는 ApplicationContext 가 만들어기 전에 발생하는 이벤트이므로 빈등록 설정을 해도 빈으로 등록할 수 없음
public class SampleListener implements ApplicationListener<ApplicationStartingEvent> {
@Override
public void onApplicationEvent(ApplicationStartingEvent event) {
System.out.println("=======================");
System.out.println("Application is Starting");
System.out.println("=======================");
}
}
addListners()
application.addListeners(new SampleListener());
빈으로 등록 가능한 Listener 예시
ApplicationStartedEvent 의 경우 ApplicationContext 가 만들어진 다음에 발생하는 이벤트이므로 빈으로 등록해서 서용 가능
@Component
public class StartedListener implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
System.out.println("===================");
System.out.println("Application Started");
System.out.println("===================");
}
}
WebApplicationType 설정
SERVLET
이 없고REACTIVE
로 동작하지만SERVLET
이 있으면 무조건SERVLET
로 동작함
Spring MVC가 들어있으면 기본적으로SERVLET
로 동작함
Spring Webfulx가 들어있으면 기본적으로REACTIVE
로 동작함SERVLET
,REACTIVE
둘다 없으면 NONE로 동작
WebApplicationType 종류
NONE : WebApplication 사용안함 설정
application.setWebApplicationType(WebApplicationType.NONE);
SERVLET : SERVLET 사용 설정
application.setWebApplicationType(WebApplicationType.SERVLET);
REACTIVE : REACTIVE 사용 설정
application.setWebApplicationType(WebApplicationType.REACTIVE);
Application Arguments
-D
들어오는 옵션은JVM
옵션--
로 들어오는 옵션은 Program arguments
TEST Code
--
으로 옵션을 준 bar만 Application Arguments 이므로 true로 출력됨
@Component
public class SampleArguments {
public SampleArguments(ApplicationArguments arguments) {
System.out.println("foo: "+arguments.containsOption("foo"));
System.out.println("bar: "+arguments.containsOption("bar"));
}
}
Console 에서 테스트
-
먼저 Maven Clean 후 패키징
mvn clean package -DskipTests
-
target 폴더에서 java -jar 명령으로 Test
java -jar springinit-0.0.1-SNAPSHOT.jar --foo --bar
Application 실행한 뒤 뭔가 실행하고 싶을때
두가지가 있지만 ApplicationRunner 사용을 추천함
둘다JVM
옵션은 받지 못하고 Application Arguments 옵션(--
)으로 준 값만 받을 수 있음
ApplicationRunner이 여러개이면@Order(1)
로 순서를 주어 우선순위를 정할 수 있음 숫자가 낮을 수록 우선순위가 높음
ApplicationRunner
아래와 같이 ApplicationRunner 를 상속받아 코드를 작성하면 Application 실행한뒤 로직을 실행함
@Component
public class SampleRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("foo: "+args.containsOption("foo"));
System.out.println("bar: "+args.containsOption("bar"));
}
}
CommandLineRunner
@Component
public class SampleCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
Arrays.stream(args).forEach(System.out::println);
}
}
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 부트 개념과 활용] 4-3. 외부 설정 2부 (0) | 2019.10.25 |
---|---|
[스프링 부트 개념과 활용] 4-3. 외부 설정 1부 (0) | 2019.10.24 |
[스프링 부트 개념과 활용] 4-2. SpringApplication 1부 (0) | 2019.10.22 |
[스프링 부트 개념과 활용] 4-1. 스프링 부트 활용 소개 (0) | 2019.10.21 |
[스프링 부트 개념과 활용] 3-8. 독립적으로 실행 가능한 JAR (0) | 2019.10.20 |
댓글