[SPRING] Spring 3 빈 인스턴스화 시퀀스
SPRINGSpring 3 빈 인스턴스화 시퀀스
어쨌든 bean을 인스턴스화 할 순서를 지정합니까? 즉, 특정 빈이 다른 빈들보다 먼저 인스턴스화되도록하기를 원한다.
Spring 3.2와 annotation 기반 선언 메소드를 사용하고 있습니다.
해결법
-
==============================
1.bean A가
, @Autowired 또는 를 정의함으로써 bean B에 의존하면, 그 순서는 Spring 컨테이너에 의해 강제되고 고정된다. 여기에 문제 없습니다. bean A가
, @Autowired 또는 를 정의함으로써 bean B에 의존하면, 그 순서는 Spring 컨테이너에 의해 강제되고 고정된다. 여기에 문제 없습니다. 그러나 명시 적 종속성을 통해 표현되지 않는 bean 작성의 특정 순서를 적용하려면 다음을 사용하십시오.
<bean id="A" depends-on="B"/> <bean id="B"/>
이상 (주석을 사용하면 @Bean Java 설정에서도 작동 함) :
@Service @DependsOn("B") public class A {}
또는 더 나은 ... 그것을 사용하지 마십시오. 이러한 구문은 코드 냄새이며 종종 구성 요소간에 보이지 않는 종속성이 있음을 제안합니다.
-
==============================
2.Tomasz가 제공 한 답변에 동의합니다. 만약 콩 A가 콩 B에 의존한다는 것을 안다면, 이것은 올바른 접근법입니다.
Tomasz가 제공 한 답변에 동의합니다. 만약 콩 A가 콩 B에 의존한다는 것을 안다면, 이것은 올바른 접근법입니다.
때로는 모든 bean 인스턴스화 전에 실행해야하는 논리가 있습니다. 이 경우 BeanFactoryPostProcessor를 사용할 수 있습니다. Spring은 처음에는 BeanFactoryPostProcessors를 생성하고 실행한다. 동시에 BeanFactoryPostProcessor가 일부 bean A에 종속되면 특성 또는 생성자 주입을 사용할 수 있습니다. 이 경우 Spring은 먼저 BeanFactoryPostProcessor를 호출하고 BeanFactoryPostProcessor를 호출하고 그 후에 BeanFactoryPostProcessor를 호출하면 컨텍스트에서 다른 모든 Bean을 시작한다.
-
==============================
3.Bean의 Ordered 인터페이스를 사용하여 다른 Bean과 관련된 순서를 정의 할 수 있습니다.
Bean의 Ordered 인터페이스를 사용하여 다른 Bean과 관련된 순서를 정의 할 수 있습니다.
-
==============================
4.또한 emanedov가 BeanFactoryPostProcessor를 사용하면 BeanFactoryPostProcessor 인스턴스 시퀀스를 제어하도록 Ordered 인터페이스를 구현할 수 있습니다.
또한 emanedov가 BeanFactoryPostProcessor를 사용하면 BeanFactoryPostProcessor 인스턴스 시퀀스를 제어하도록 Ordered 인터페이스를 구현할 수 있습니다.
from https://stackoverflow.com/questions/13770225/spring-3-bean-instantiation-sequence by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Tiles view (JSP)에서 Spring 빈에 접근하기 (0) | 2018.12.24 |
---|---|
[SPRING] Spring @JsonIgnore가 작동하지 않음 (0) | 2018.12.24 |
[SPRING] Spring IoC를 사용하여 enum 값 설정하기 (0) | 2018.12.24 |
[SPRING] Spring Boot에서이 spring.jpa.open-in-view = true 속성은 무엇입니까? (0) | 2018.12.24 |
[SPRING] 엔티티 당 두 개의 테이블을 최대 절전 모드로 전환 (0) | 2018.12.24 |