2017-12-03 19 views
0

스프링 부트를 사용하여 내 나머지 Api 호출을 보내고 있습니다. 스프링 부트가 모든 구성을 단계적으로로드하는 방법을 알고 싶습니다. 구성을로드하는 동안 프로세스가 어떤 것인지, 순서가 어떻게 달라지는지를 확인할 수 있습니다. Spring 보안, db 설정 및 bean 초기화 (모두 초기화 됨)로드되는 방식. 그리고 스프링 부트가 우선 순위 (순서)를 찾는 방법. 먼저로드되어야하며 다음에 있어야합니다.스프링 부츠 작동 원리, 모든 구성로드 방법

+0

'@Order (int value)'는로드 순서를 정의합니다. 가장 낮은 값. 가장 먼저로드됩니다. 이런 유형의 질문을하기 전에 먼저 설명서를 읽어야합니다. 의사가 무엇인가를 이해할 수 없다면 이해할 수없는 부분이나 부분을 물어볼 수 있습니다. –

답변

1

스프링 부트의 자동 구성 메커니즘에 따라 콩을로드하면로드 할 Configuration 클래스의 정규화 된 이름을 포함하는 jar 파일의 META-INF 폴더에 spring.factories 파일이 있습니다.
스프링 부트가 그와 같은 파일을 찾으면, 컨피규레이션을 빈으로로드 할 것이고, 컨피규레이션은 대개 다른 빈을로드한다.

다른 방법으로 구성을로드 할 수 있습니다. 단지 @Import을 입력하는 것만으로도 그 중 일부는 작동합니다 (예 : @EnableMetrics).

일반적으로 스타터라고하는 자동 구성 메커니즘이 포함 된 Jar 파일입니다.

스프링에 의해 픽업되는 특수한 Bean들도 있습니다. 예를 들어 필터로 변환 될 FilterDefinitionBean이나 시작 후 실행될 CommandLineRunner가 있습니다. 봄 부팅이 자동으로 이러한 의존성에 기초를 초기화하는 올바른 순서를 감지하기 때문에


일반적으로 당신이 선발의 순서에 대해 너무 많이 걱정하지 않아도 @DependsOn 주석 콩.
스프링 부트 스타터 자동 구성은 빈이 이미 정의 된 후에 발생하므로 폴백 옵션을 정의하지 않은 경우에만 폴백 백을 제공 할 수 있습니다. 당신이 @ConditionalOnBean이있을 때

하지만 가끔은, 특히 당신이 명시 적으로 순서를 정의해야이이 자동 초기화해야하는 위치를 정의하는 @AutoConfigureBefore@AutoConfigureAfter 주석하여 수행 할 수 있습니다.

또 다른 주석 @AutoConfigureOrder@Order 주석의 스프링 부트와 동일하므로 순서를 변경하는 데 사용할 수 있습니다 (@Order는 자동 구성에서 작동하지 않으므로).

좋아하는 시작 코드의 소스 코드를 확인하면 이러한 주문 변경 주석이 종종 클래스에 추가되는 것을 볼 수 있습니다.