머리말
우리의 실제 작업에서 우리는 항상 그러한 요구 사항을 만나게됩니다. 프로젝트가 시작되면 스레드 풀 초기화, 암호화 인증서를 미리로드하는 등의 초기화 작업을 수행해야합니다. 오늘 저는 프로젝트 시작의 초기화 리소스 작동을 해결하는 데 도움이되는 스프링 부팅 도구를 소개합니다.
이 아티팩트는 CommandLinerUnner입니다. CommandLinerUnner 인터페이스의 구성 요소는 SpringApplication.run () 모든 SpringBeans가 초기화 된 후에 실행되며, 이는 애플리케이션 시작 시작시 일부 데이터 초기화 작업에 매우 적합합니다.
다음으로 사례를 사용하여 사용 방법을 테스트합니다. 테스트하기 전에 스타트 업 클래스에 두 줄의 인쇄 프롬프트를 추가하여 CommandLinerUnner의 실행 타이밍을 식별 할 수 있도록합니다.
@SpringBootApplicationPublic Class CommandLinerUnnerApplication {public static void main (String [] args) {System.out.println ( "시작 서비스"); SpringApplication.run (CommandLinerUnnerApplication.class, args); System.out.println ( "서비스가 시작되었습니다."); }}다음으로, 우리는 CommandLinerUnner를 물려 받고 run () 메소드를 구현하는 클래스를 직접 생성합니다.
@ComponentPublic 클래스 러너는 CommandLinerUnner를 구현합니다 {@override public void run (String ... args)은 예외 {system.out.println ( "러너가 초기화 시작 ..."); }}run () 메소드에서 일부 매개 변수를 인쇄하여 실행 방법을 확인합니다. 완료 후 테스트를위한 프로젝트를 시작하십시오.
... 시작하기위한 서비스 .____ __ _ /// / ____'_ __ __ (_) _____ _ / / / () / ___ | .__ || | _ | | _ | | _ | | _/__, | / / / / / =====================================____/=/_/_/ :: Spring Boot :: (v2.0.0.RELEASE)..2018-04-21 22:21:34.706 INFO 27016 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat은 컨텍스트 경로가 포함 된 포트 (S) : 8080 (HTTP)에서 시작했습니다.
콘솔의 인쇄 정보를 기반으로 Spring Boot 컨테이너가로드 된 후 CommandLinerUnner의 메소드가 실행되고 실행이 완료된 후 프로젝트가 시작됩니다.
컨테이너를 시작할 때 많은 리소스를 초기화해야하고 초기 리소스가 서로 주문되는 경우 다른 CommandLinerUnners의 실행 순서를 어떻게 보장 할 수 있습니까? Spring Boot도 솔루션을 제공합니다. 그것은 @Order 주석을 사용하는 것입니다.
테스트 할 두 개의 CommandLinerUnner 구현 클래스를 만듭니다.
첫 번째 구현 클래스 :
@component @order (1) public class orderRunner1은 CommandLinerUnner를 구현합니다. }}
두 번째 구현 클래스 :
@component @order (2) public class orderrunner2 구현 commandLinerUnner {@override public void run (string ... args)은 예외 {system.out.println ( "OrderRunner2 시작 시작 ..."); }}추가가 완료된 후에는 실행 순서를 다시 시작하고 관찰합니다.
... 시작할 서비스. ____ _ __ _ /// ___'_ __ _ _ (_) _ __ __ / / / (() / ___ | '_ |'_ | | / / / / // ___) | | | | | | | | | | | | | | || (_ | |))))) '| ____ | .__ || | _ | | _ | | _/__, | / / / / / ====================================___/=/_// :: Spring Boot :: (v2.0.0.RELEASE)...2018-04-21 22:21:34.706 INFO 27016 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat 컨텍스트 경로가 포함 된 포트 (S) : 8080 (HTTP)에서 시작하여 '2018-04-21 22 : 21 : 34.710 정보 27016 --- [Main] com.neo.commandLinerUnnerApplication : 3.796 초의 JVM (5.128을위한 JVM)에서 시작하는 초기 시작 ... The Orderrunner 2 시작부터 시작합니다. 초기화 ... 서비스가 시작되었습니다.
콘솔의 출력을 통해 @Order 주석을 추가하는 구현 클래스가 먼저 실행되고 @Order ()의 값이 작을수록 시작됩니다.
실제로 ApplicationRunner를 사용하여 동일한 목적을 달성 할 수 있으며 둘 사이에는 거의 차이가 없습니다.
샘플 코드 : https://github.com/ityoukne/spring-cloud-examples (로컬 다운로드)
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.