스프링 부트 강의 정리 (6~7 : SpringApplication)
2019. 4. 20. 20:40ㆍ[공부] 영상/스프링 부트 강의
SpringApplication 클래스
public static void main(String[] args) {
SpringApplication.run(MySpringConfiguration.class, args);
}
- 스프링은 MainApplication 클래스 안의 main 메소드에서 SpringApplication.run() 을 이용하여 실행된다.
- info level 에서 logging 할 수 있도록 해준다. (application.properties 또는 application.yml를 이용하여 logging level을 바꿀 수도 있긴하다.) 참조 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-custom-log-levels
- failure analyzer를 추가할 수 있다. failure analyzer 가 없으면 전체 condition report를 log로 찍어준다.
- SpringApplication을 커스터마이징 할수 있다. (ex. 배너를 변경할 수 있다. // 상세 설명 참조, XML 설정파일을 변경 할 수 있다. 등...)
- SpringApplicationBuilder를 사용하면 커스터마이징하는 것을 도와줄 수 있다.
- 어떤 이벤트는 ApplicationContext의 생성 전에 Trigger 되는 경우가 있다. 그런데 이러한 이벤트를 처리하기 위해 Bean에 event Listener 를 등록해 버리면 해당 이벤트는 잡히지 않을 것이다. (모든 Bean들이 생성되지 않은 상태이므로) 이러한 이벤트들을 SpringApplication에 등록 할 수 있다. // 상세 설명 참조
- SpringApplication 은 적절한 타입의 ApplicationContext를 만드려고 시도한다. 기본적으로 시도하는 Application Context는 // 상세 설명 참조
- Spring 을 실행할 때 사용한 Command line argument 프로젝트에서 사용할 수 있다. // 상세 설명 참조
- SpringApplication의 종료는 JVM shutdown으로 설정되어 있기 때문에 gracefully 하게 종료된다. ApplicationContext 가 안전하게 종료되므로 Spring lifecycle에 존재하는 모든 콜백 함수가 실행되고 종료된다.
- Admin 설정을 통해서 Spring boot application을 원격에서 종료, 실행, 재시작을 할 수 있다. (JConsole을 이용해서)
@PostConstruct
해당 Annotation이 달려있는 메소드는 이 클래스를 Bean을 만들고나서 자동으로 호출되도록 한다.
상세 설명
4번 스프링 부트 배너를 바꿀 수 있다.
관련 포스팅은 아래 글을 참조하자.
6번 배너를 안보이게 하고 Application이 시작될 때 "Application is started" 를 출력하도록 할 경우
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MySpringConfiguration.class);
app.setBannerMode(Banner.Mode.OFF);
app.addListener(new MyListener());
app.run(args);
}
public class MyListener implemnets ApplicationListener<ApplicationStartedEvent>{
@Override
public void onApplicationEvent(ApplicationStartedEvent event){
System.out.println("Application is started");
}
}
7번 SpringApplication이 시도하는 기본적인 ApllicationContext
Spring MVC 이 존재할 경우 | AnnotationConfigServletWebServerApplicationContext |
Spring MVC 이 존재하지 않고 Spring Web Flux 가 존재할 경우 |
AnnotationConfigReactiveWebServerApplicationContext |
둘다 아닐 경우 | AnnotationConfigApplicationContext |
8번
Spring 을 실행할 때 사용한 Command line arguments를 받는 방법들
1. ApplicationArguments 클래스 이용하기
2. ApplicationRunner 나 CommandLineRunner 인터페이스를 상속 받는 객체 만들기
3. @Value 이용하기. // 이걸 쓰자 훨씬 깨끗하다.
ApplicationArgument를 @Value로 주입받는 방법
커맨드라인 예시 : java -jar target/application0-0-1=SNAPSHOT.jar --myOption=hello --myOption=world
@Value("${myOption}")
private String[] myOptions;
'[공부] 영상 > 스프링 부트 강의' 카테고리의 다른 글
스프링 부트 강의 정리 (13~14 : HttpMessageConverter, Static content) (0) | 2019.04.21 |
---|---|
스프링 부트 강의 정리 (11~12 : Profile, Log) (0) | 2019.04.21 |
스프링 부트 강의 정리 (8~10 : Properties 읽어들이기) (0) | 2019.04.21 |
스프링 부트 강의 정리 (4~5 : Configuration, devtools) (0) | 2019.04.20 |
스프링 부트 강의 정리 (1~3 : 인트로, Jar, MainApplication) (0) | 2019.04.20 |