봄 5.x를 소스 여행 서른아홉의 getBean 확장 프로세서 4.5
그림만큼이나
InstantiationAwareBeanPostProcessor 的 postProcessProperties 和 postProcessPropertyValues
이것은 우리가 내부, 자동 조립을 부르는 CommonAnnotationBeanPostProcessor
및 AutowiredAnnotationBeanPostProcessor
주입 프로세서를 처리.
postProcessPropertyValues
그것은 만료되었습니다.
사실, 거의 모든 처리. 우리는 자신의 확장에 여기에있을 수 있도록 개체를 가지고, 무엇을 할 수없는 것은 바로, 구체적으로 입증되지 않은 것.
주입의 invokeAwareMethods 완료의 initializeBean 초기화 시작했다
주로 어떤 속성을 설정, 더 중요한 존재 BeanFactoryAware
, 그것을 얻을 수있다 BeanFactory
.
예를 들어, 우리는 자신의 실현 하나가이 정보를 얻을 수 있습니다, 그것은 같은 더 간단한 모양은 다음과 같습니다
applyBeanPostProcessorsBeforeInitialization 초기화하기 전에
당신이 돌아 오면 null
, 다음, 그래서 여기에 협상을 계속되지 않도록 직접 반환 실제로 직접 다시 핸들에 사용자 지정 프로세서를 다른 프로세서를 구성 할 수 있습니다 null
, 그는 돌아왔다.
를 들면, 사실에 bean
일부 작업, 아무것도 특별한.
invokeInitMethods 초기화 방법을 수행
주로 구현은 구현 InitializingBean
인터페이스 afterPropertiesSet
방법은 :
어떤 방법 invokeCustomInitMethod 사용자 정의
즉이되는 bean
세트에 정의 initMethodName
:
현실
그냥 클래스 메소드의 정의를 쓰기 :
public class PoJo {
public void init(){
System.out.println("自定义initMethodName");
}
}
테스트 코드
등록 bean 정의는 다음으로 설정됩니다 InitMethodName
.
@Test
public void invokeCustomInitMethodTest() throws Exception {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(MyConfig.class);
AnnotatedBeanDefinition annotatedBeanDefinition=new AnnotatedGenericBeanDefinition(PoJo.class);
annotatedBeanDefinition.setInitMethodName("init");
applicationContext.registerBeanDefinition("myBean",annotatedBeanDefinition);
applicationContext.refresh();
}
초기화 applyBeanPostProcessorsAfterInitialization 후
그리고 초기화하기 전에 유사한 처리는 말을하지 않습니다.
음, 오늘, 우리는 단지 자신의 학습, 제한 용량 이해를 참조하십시오 위대한 하나님을 뿌리지 마십시오 도움이 연구에 희망과 이해, 용서하십시오.