복붙노트

[SPRING] 스프링 빈 초기화 순서

SPRING

스프링 빈 초기화 순서

여러 개의 컨텍스트 파일이 있습니다. 요구 사항은 다음과 같습니다. Bean (일부 구성 변경)은 나머지 bean 중에서 먼저 초기화됩니다.

이 Bean을 먼저로드하는 방법이 있습니까?

하나의 옵션은 depends-on` 속성을 사용하는 것입니다. 그러나 그것은 모든 콩을 업데이트해야 할 것이므로 최상의 해결책은 아닙니다.

더 나은 선택이 있습니까?

해결법

  1. ==============================

    1.IMHO https://jira.spring.io/browse/SPR-3948을 수정할 때까지 기다려야합니다.

    IMHO https://jira.spring.io/browse/SPR-3948을 수정할 때까지 기다려야합니다.

    사실, 각 applicationContext.xml마다 각각의 의존성을 사용하지 않아도됩니다.

    모든 "하위 수준"applicationContext.xml에서 를 사용하여 최상위 applicationContext.xml을 가져옵니다.

    그리고 가장 먼저로드해야하는 을 제외하고는 최상위의 applicationContext.xml에서만 각 bean 정의에 depends-on 속성을 사용하십시오.

  2. ==============================

    2.일반적으로 기술 빈 (예 : MBean 추가)이 비즈니스 빈 앞에로드되도록 bean의 순서를 요구하는 것은 의미가 있습니다 (http://jira.springframework.org/browse/SPR-3948에서 제안 된 것과 같습니다)

    일반적으로 기술 빈 (예 : MBean 추가)이 비즈니스 빈 앞에로드되도록 bean의 순서를 요구하는 것은 의미가 있습니다 (http://jira.springframework.org/browse/SPR-3948에서 제안 된 것과 같습니다)

    BeanPostProcessor를 사용하는 것은 빈에서 순서를 제공하는 또 다른 방법입니다. 어떻게 적용되는지 보려면 AbstractApplicationContext.refresh ()를 확인하십시오.

  3. ==============================

    3.@Order를 사용하여 bean에 주석을 달아 빈 시작 순서에 영향을 미쳤습니다. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/Order.html을 참조하십시오.

    @Order를 사용하여 bean에 주석을 달아 빈 시작 순서에 영향을 미쳤습니다. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/Order.html을 참조하십시오.

  4. ==============================

    4.나는 봄 전문가가 아니며 누군가있는 사람에게 큰소리로 외칠 것 같다. 하지만 그때까지 ...

    나는 봄 전문가가 아니며 누군가있는 사람에게 큰소리로 외칠 것 같다. 하지만 그때까지 ...

    모호한 부분이있는 곳에서는 Spring이 설정 파일에서 발견 한 순서대로 항목을로드 / 적용한다고 추측 할 수 있습니다. 따라서, 가장 간단하고 근사적인 근사법으로, 나는 여러분이 처음에 초기화하고자하는 것이 설정 파일의 첫 번째 것들 중 하나라는 것을 확실히하려고 노력할 것입니다.

    계층 구조가 모두있는 경우 "기본"구성을 다른 구성 요소가 호출되기 전에 "기본"파일에 있거나 가능한 경우 첫 번째 호출 된 파일에 포함시켜야합니다.

  5. from https://stackoverflow.com/questions/3187899/order-of-spring-bean-initialization by cc-by-sa and MIT license