2014-12-24 5 views
-1

스프링 컨텍스트 4.0.5에서 AbstractApplicationContext.refresh()의 invokeBeanFactoryPostProcessors를 호출하면 BeanFactoryPostProcessor 구현에 일부 Bean이 생성 될 수 있습니다.AutowiredAnnotationBeanPostProcessor가 AbstractBeanFactory.beanPostProcessors에 추가되기 전에 Spring Bean이 생성되었습니다.

빈은 (다음 줄에서 registerBeanPostProcessors (beanFactory)를 호출하여 추가 된) Bean을 만들 때 AbstractbeanFactory.beanPostProcessors에 추가되지 않으므로 @Autowired 속성은 null이됩니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

0

를 사용합니다.

응용 프로그램 컨텍스트 파일에서 가져 오기 태그를 사용할 때 호출되는 메서드입니다. bean을 annotation config로 리소스 파일에 등록하고 태그를 제거하면 문제가 해결됩니다.

-1

봅니다 문제는 AutowiredAnnotationBeanPostProcessor 등록 전에 호출이 방법 BeanFactoryPostProcessors에, 새로 고침 방법입니다 봄 @PostConstruct 주석에게 https://docs.oracle.com/javaee/5/api/javax/annotation/PostConstruct.html

+0

안녕하세요 Pavel, 빠른 재생을위한 탱크. 널 (null) 특성의 인스턴스를 작성하기 위해 InitializingBean을 구현했다. 나는 신선한 해결책을 좋아한다. 예를 들어, AutowiredAnnotationBeanPostProcessor를 beanPostProcessors에 추가하거나 AbstractApplicationContext.referes()에서 호출 메소드 순서를 변경했다. – nsafari

관련 문제