Spring Boot 2.0 새로운 기능 응용 프로그램 StartedEvent 실전

7065 단어 SpringBoot
하나. 눈여겨보다
Spring Boot 2.0 에서 이벤트 모델 에 대해 강 화 를 했 습 니 다. 주로 ApplicationStarted Event 사건 을 추 가 했 기 때문에 2.0 버 전에 서 모든 사건 은 실 행 된 선후 순서에 따라 다음 과 같 습 니 다.
  • ApplicationStartingEvent
  • ApplicationEnvironmentPreparedEvent
  • ApplicationPreparedEvent
  • ApplicationStarted Event < = 새로 추 가 된 이벤트
  • ApplicationReadyEvent
  • ApplicationFailedEvent

  • 둘째. 실전
    1 신규 의존
    
        
            org.springframework.boot
            spring-boot-starter-web
        
    
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
        
            org.projectlombok
            lombok
            provided
        
    

    2 응용 프로그램 환경 Prepared EventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationEnvironmentPreparedEventListener implements ApplicationListener {
    
    
        @Override
        public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
            log.info("......ApplicationEnvironmentPreparedEvent......");
        }
    
    }

    3 응용 프로그램 FailedEventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.context.event.ApplicationFailedEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationFailedEventListener implements ApplicationListener {
    
        @Override
        public void onApplicationEvent(ApplicationFailedEvent event) {
            log.info("......ApplicationFailedEvent......");
        }
    
    }

    4 응용 프로그램 Prepared EventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.context.event.ApplicationPreparedEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationPreparedEventListener implements ApplicationListener {
        @Override
        public void onApplicationEvent(ApplicationPreparedEvent event) {
            log.info("......ApplicationPreparedEvent......");
        }
    
    }

    5 ApplicationReadyEventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.context.event.ApplicationReadyEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationReadyEventListener implements ApplicationListener {
    
        @Override
        public void onApplicationEvent(ApplicationReadyEvent event) {
            log.info("......ApplicationReadyEvent......");
        }
    
    }

    6 응용 프로그램 StartedEventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.context.event.ApplicationStartedEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationStartedEventListener implements ApplicationListener {
        @Override
        public void onApplicationEvent(ApplicationStartedEvent event) {
            log.info("......ApplicationStartedEvent......");
        }
    
    }

    7 응용 프로그램 StartingEventListener 모니터
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.context.event.ApplicationStartingEvent;
    import org.springframework.context.ApplicationListener;
    
    @Slf4j
    public class ApplicationStartingEventListener implements ApplicationListener {
    
        @Override
        public void onApplicationEvent(ApplicationStartingEvent event) {
            log.info("......ApplicationStartingEvent......");
        }
    
    }

    8 시작 클래스
    1 코드
    package com.didispace;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    @Slf4j
    @SpringBootApplication
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
        @Bean
        public DataLoader dataLoader() {
            return new DataLoader();
        }
    
        @Slf4j
        static class DataLoader implements CommandLineRunner {
    
            @Override
            public void run(String... strings) throws Exception {
                log.info("Loading data...");
            }
        }
    
    }

    2 설명 하 다.
    공식 문서 에서 ApplicationStartedEvent 와 ApplicationReadyEvent 에 대한 설명:
    An ApplicationStartedEvent is sent after the context has been refreshed but before any application and command-line runners have been called.An ApplicationReadyEvent is sent after any application and command-line runners have been called. It indicates that the application is ready to service requests
    문서 에서 우 리 는 그들 둘 사이 에 또 하나의 과정 이 command - line runners 가 호출 된 내용 이라는 것 을 알 수 있다.그래서 이 두 사건 의 차 이 를 더욱 정확하게 느끼 기 위해 우 리 는 응용 주 류 에 CommandLine Runner 의 실현 을 추가 합 니 다.
    셋. 실행 결과
    2018-10-24 19:32:01.772  INFO 14708 --- [           main] c.d.ApplicationPreparedEventListener     : ......ApplicationPreparedEvent......
    ......
    2018-10-24 19:32:05.032  INFO 14708 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
    2018-10-24 19:32:05.068  INFO 14708 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2018-10-24 19:32:05.072  INFO 14708 --- [           main] com.didispace.Application                : Started Application in 3.8 seconds (JVM running for 4.372)
    2018-10-24 19:32:05.074  INFO 14708 --- [           main] c.d.ApplicationStartedEventListener      : ......ApplicationStartedEvent......
    2018-10-24 19:32:05.075  INFO 14708 --- [           main] com.didispace.Application$DataLoader     : Loading data...
    2018-10-24 19:32:05.076  INFO 14708 --- [           main] c.d.ApplicationReadyEventListener        : ......ApplicationReadyEvent......

    넷. 지식 습득
    1 @ Slf4j 에 대한 설명
        org.projectlombok
        lombok
    그리고 클래스 에 @ Slf4j 주 해 를 적어 주세요.
    방법 에서 직접 사용 하면 로 그 를 인쇄 할 수 있 습 니 다.
    다섯 가지 참고
    https://blog.csdn.net/qq_26525215/article/details/79182628
    http://blog.didispace.com/Spring-Boot-2-0-feature-2-ApplicationStartedEvent/

    좋은 웹페이지 즐겨찾기