인스턴스화 할 빈의 순서를 지정하는 방법이 있습니까? 즉, 특정 빈이 다른 빈들보다 먼저 인스턴스화되도록하기를 원한다.스프링 3 빈 인스턴스화 시퀀스
스프링 3.2 및 주석 기반 선언 방법을 사용하고 있습니다.
인스턴스화 할 빈의 순서를 지정하는 방법이 있습니까? 즉, 특정 빈이 다른 빈들보다 먼저 인스턴스화되도록하기를 원한다.스프링 3 빈 인스턴스화 시퀀스
스프링 3.2 및 주석 기반 선언 방법을 사용하고 있습니다.
콩 다음 순서 <property/>
, @Autowired
또는 <constructor-arg/>
정의하여 빈 B에 의존하는 경우는 스프링 컨테이너 강제 고정된다. 여기에 문제 없습니다.
하지만 당신은 명시 적 종속성을 사용 주시기를 통해 표현되지 않은 콩 창조의 특정 순서로 시행 할 경우 :
<bean id="A" depends-on="B"/>
<bean id="B"/>
이상 (주석, @Bean
자바 구성으로도 작동) :
@Service
@DependsOn("B")
public class A {}
이상 ... 사용하지 마십시오. 이러한 구조는 코드 냄새이며 종종 구성 요소간에 보이지 않는 종속성이 있음을 제안합니다.
코드 냄새 설명에 대한 +1 – ElderMael
빈의 정렬 된 인터페이스를 사용하여 다른 빈에 대한 순서를 정의 할 수 있습니다.
Tomasz가 제공 한 답변에 동의합니다. 만약 콩 A가 콩 B에 의존한다는 것을 안다면, 이것은 올바른 접근법입니다.
때때로 모든 bean 인스턴스화 전에 실행되어야하는 논리가 있습니다. 이 경우 BeanFactoryPostProcessor을 사용할 수 있습니다. Spring은 처음에는 BeanFactoryPostProcessors를 생성하고 실행한다. 동시에 BeanFactoryPostProcessor가 일부 bean A에 종속되면 특성 또는 생성자 주입을 사용할 수 있습니다. 이 경우 Spring은 먼저 BeanFactoryPostProcessor를 호출하고 BeanFactoryPostProcessor를 호출하고 그 후에 BeanFactoryPostProcessor를 호출하면 컨텍스트에서 다른 모든 Bean을 시작한다.
시스템 속성 파일에서 spring.active.profile 설정을 설정하는 데이 방법을 사용했습니다. 위대한 작품! –
내 연습에서는 인스턴스화 시퀀스가 XML 구성 파일의 순서와 같습니다. 하지만 예외가있을 수 있습니다 .. –