봄 5.x를 소스 여행 서른아홉의 getBean 확장 프로세서 4.5

그림만큼이나

그림 삽입 설명 여기

InstantiationAwareBeanPostProcessor 的 postProcessProperties 和 postProcessPropertyValues

이것은 우리가 내부, 자동 조립을 부르는 CommonAnnotationBeanPostProcessorAutowiredAnnotationBeanPostProcessor주입 프로세서를 처리.
그림 삽입 설명 여기
그림 삽입 설명 여기
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 후

그리고 초기화하기 전에 유사한 처리는 말을하지 않습니다.
그림 삽입 설명 여기

음, 오늘, 우리는 단지 자신의 학습, 제한 용량 이해를 참조하십시오 위대한 하나님을 뿌리지 마십시오 도움이 연구에 희망과 이해, 용서하십시오.

게시 된 235 개 원래 기사 · 원 찬양 74 ·은 30000 +를 볼

추천

출처blog.csdn.net/wangwei19871103/article/details/105175013