스프링 클 라 우 드 CommandLineRunner 인터페이스

4213 단어 SpringSpringBoot
읽 기 목록
  • 서문
  • CommandLineRunner 인 터 페 이 스 를 어떻게 사용 합 니까
  • @ Order 주석 으로 여러 CommandLine Runner 구현 클래스 의 실행 순 서 를 설정 합 니 다
  • 왜 CommandLine Runner 인 터 페 이 스 를 사용 합 니까
  • 원문 체인
  • 머리말
    Spring boot 의 CommandLineRunner 인 터 페 이 스 는 응용 초기 화 후 코드 블록 논 리 를 실행 하 는 데 사 용 됩 니 다. 이 초기 화 코드 는 전체 응용 수명 주기 에 한 번 만 실 행 됩 니 다.
    CommandLine Runner 인 터 페 이 스 를 어떻게 사용 합 니까?
    우 리 는 다음 과 같은 세 가지 방식 으로 CommandLineRunner 인 터 페 이 스 를 사용 할 수 있다.
    1) @ Component 주석 과 함께 사용
    이런 사용 방식 은 상당히 간편 하 다. 다음 과 같다.
    @Component
    public class ApplicationStartupRunner implements CommandLineRunner {
        protected final Log logger = LogFactory.getLog(getClass());
     
        @Override
        public void run(String... args) throws Exception {
            logger.info("ApplicationStartupRunner run method Started !!");
        }
    }

    2) @ SpringBootApplication 주석 과 함께 사용
    이런 사용 방식 도 상당히 간단 하 다. 참고 코드 는 다음 과 같다.
    @SpringBootApplication
    public class SpringBootWebApplication extends SpringBootServletInitializer implements CommandLineRunner {
     
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringBootWebApplication.class);
        }
     
        public static void main(String[] args) throws Exception {
            SpringApplication.run(SpringBootWebApplication.class, args);
        }
     
     
        @Override
        public void run(String... args) throws Exception {
            logger.info("Application Started !!");
        }
    }

    3) CommandLine Runner 인 터 페 이 스 를 실현 한 Bean
    이런 방식 도 대동소이 하 다. 바로 SpringBootApplication 에서 빈 을 정의 하고 빈 을 바 꾸 어 CommandLineRunner 인 터 페 이 스 를 실현 했다. 참고 코드 는 다음 과 같다.
    ApplicationStartupRunner.java
    public class ApplicationStartupRunner implements CommandLineRunner {
        protected final Log logger = LogFactory.getLog(getClass());
        @Override
        public void run(String... args) throws Exception {
            logger.info("Application Started !!");
        }
    }

    등록 ApplicationStartupRunner bean
    @SpringBootApplication
    public class SpringBootWebApplication extends SpringBootServletInitializer {
     
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringBootWebApplication.class);
        }
     
        public static void main(String[] args) throws Exception {
            SpringApplication.run(SpringBootWebApplication.class, args);
        }
     
        @Bean
        public ApplicationStartupRunner schedulerRunner() {
            return new ApplicationStartupRunner();
        }
    }

    메모: CommandLineRunner 인 터 페 이 스 를 실현 할 때 run(String… args) 방법 내부 에 이상 을 던 지면 응용 시작 에 실패 할 수 있 으 므 로 위험한 코드 를 try-catch 코드 블록 에 넣 는 것 을 기억 하 세 요.
    @ Order 주석 으로 여러 CommandLine Runner 구현 클래스 의 실행 순 서 를 설정 합 니 다.
    하나의 응용 프로그램 에 여러 개의 CommandLineRunner 인터페이스 구현 클래스 가 존재 할 수 있 습 니 다. 실행 순 서 를 설정 하려 면 사용 할 수 있 습 니 다.  @Order 실현
    @Order(value=3)
    @Component
    class ApplicationStartupRunnerOne implements CommandLineRunner {
        protected final Log logger = LogFactory.getLog(getClass());
     
        @Override
        public void run(String... args) throws Exception {
            logger.info("ApplicationStartupRunnerOne run method Started !!");
        }
    }
     
    @Order(value=2)
    @Component
    class ApplicationStartupRunnerTwo implements CommandLineRunner {
        protected final Log logger = LogFactory.getLog(getClass());
     
        @Override
        public void run(String... args) throws Exception {
            logger.info("ApplicationStartupRunnerTwo run method Started !!");
        }
    }

    출력 로그:
    2017-03-08 13:55:04 - ApplicationStartupRunnerTwo run method Started !!
    2017-03-08 13:55:04 - ApplicationStartupRunnerOne run method Started !!

    왜 CommandLine Runner 인 터 페 이 스 를 사용 합 니까?
  • 응용 이 시 작 된 후에 관련 코드 논 리 를 실행 하고 한 번 만 실행 합 니 다.
  • spring batch 일괄 처리 프레임 워 크 는 이 실행 기 에 의존 하여 작업 을 수행 합 니 다.
  • 우 리 는 run () 방법 에서 모든 의존 도 를 사용 할 수 있 습 니 다. 왜냐하면 초기 화 되 었 기 때 문 입 니 다.원문 체인 Site4J
  • 좋은 웹페이지 즐겨찾기