머리말
이전 기사에서는 초기화 및 일회용과 같은 인터페이스를 통해 Bean 초기화 및 파괴를 위해 일부 사용자 정의 작업을 수행 할 수 있다고 언급되어 있습니다. 주목할만한 점은 콩이 컨테이너에 의해 인스턴스화 된 후에는 작동 일뿐입니다. 봄의 세계에서, 평범한 비즈니스 개발자로서 인스턴스화 프로세스에 대해 무언가를하고 싶다면 Spring Container는 일부 인터페이스를 제공하기 때문에 분명히 Application Context 또는 Beanfactory를 상속 할 필요가 없습니다. 스프링 컨테이너는 일부 인터페이스를 제공하므로 오늘날의 직책을 포함하여 플러그인 형태의 Beanfactory에 의해 Bean의 초기화 작업을 확장 할 수 있습니다.
소스 코드, 몰래 엿보기
이 사용법은 매우 간단합니다. 두 가지 방법 만 있습니다. 우리는 자체 BeanPostProcessor를 구현하고 Spring은 자동으로 컨테이너에 등록 할 수 있습니다.
여기서 이전 방법은 Bean 인스턴스화 후, 속성 설정 후 초기화 방법 이전에 실행됩니다. 방법은 다양한 초기화 방법 후에 실행됩니다.
이것에 대해 말하면, 어떤 사람들은 수명주기 의이 초기화 인터페이스와 다른 초기화 인터페이스의 차이점이 무엇입니까? 다른 초기화 방법은 또한 콩을 수정할 수도 있습니다. 이 질문은 좋습니다. 이 인터페이스와 초기화 비인 일회용 인터페이스의 필수 차이와 사용자 정의 된 초기 파괴 방법에 대해 이야기 해 봅시다.
여기에는 두 개의 특별한 BPP가 있습니다. @autowire 또는 @inject의 주입 기능 (주입 메타 데이터를 사용할 수 있음)과 유사한 주석을 사용자 정의 해야하는 경우 일반 BPP가 귀하의 요구를 충족시키지 못할 수 있으며 두 개의 특수 BPP를 사용할 수 있습니다.
MERGEDBEANDEFINITIONPOSTPROCESSOR (이하 MBDPP라고 함)
InstantiationAwareBeanPostProcessor (이하 IABPP라고 불리는)
그들은 모두 BPP에서 물려 받지만 스프링 콩을 만드는 과정의 진입 점은 일반 BPP와 다릅니다.
InstantiationAwareBeanPostSprocessor 인터페이스
댓글을 참조하십시오
후 프로세스 전신 분열 방법
AbstractAutoweRecapableBeanFactory의 CreateBean 방법을 확인하십시오 (이 방법은 스프링 컨테이너에서 콩을 만드는 핵심 방법입니다). 후 프로세스의 전신 분열이 Bean Instantiation 전이라는 것을 알 수 있습니다. 후 프로세스 사후 변환은 인스턴스화 후 및 Autowire 주입 전에 설정됩니다. 일반적으로 스프링 프레임 워크에서 내부적으로 사용되지만 여기에는 큰 잠재력이 있습니다. 프록시 객체를 생성하기 위해 후 프로세스의 전신 분열을 사용하십시오 (일반적인 방법은 후 처리 러 스테 아프 리턴 리턴을 NULL이 아닌 경우, Bean 인스턴스를 생성하는 후속 프로세스를 방해하는 것입니다.이 방법에 의해 반환 된 객체는 Bean 인스턴스로 사용됩니다). 소스 코드를 참조하십시오 :
사후 프로세스 프로페티 값 방법
PostProcessPropertyValues를 사용하여 속성에 대한 다양한 작업을 완료하고 주석의 메타 데이터를 구문 분석 등. Spring 's @autowire 주입, JSR330의 @inject 및 JSR250의 @Resource 및 기타 주입 작업은 모두이 방법을 통해 완료됩니다.
이 인터페이스는 봄에 사용되며 관심있는 학생들은 소스 코드를 읽을 수 있습니다. 다음은 두 가지 일반적인 구현입니다.
AutowiredAnnotationBeanPostProcessor
추상적 인 항공 록시 크리징 기
mergedBeanDefinitionPostProcessor 인터페이스
이 인터페이스는 루트 비밀 정화로 전달되어 Bean의 정의를 수정할 수 있습니다. @autuwiredannotationbeanpostprocessor는이 방법을 사용하여 주입 해야하는 멤버를 확인하고 등록합니다.
BeanFactoryPostProcessor (BFPP)
BeanPostProcessor 외에도 모든 사람이 알고있는 또 다른 종류, 즉 BeanFactoryPostProcessor가 있습니다.
BFPP는 BeanFactory의 중요한 확장 플러그인이며 BeanDefinition으로 사용자 정의 할 수 있습니다. BPP와의 주요 차이점은 다음과 같습니다.
좋아, 너무 많이 말한 후, Spring 's Bean Creation의 일반적인 흐름도를 살펴 보겠습니다. 더 중요한 노드 만 여기에 표시됩니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.