2012-11-16 2 views
1

이번 봄 초보자 질문을 용서해주십시오. 나는 초판 4 장을 읽고 call-back method와 Bean post processor에 대해 소개하고있다.스프링 프레임 워크의 콜백 메소드와 Bean 포스트 프로세서의 차이점

이제 저는 두 가지에 대해 혼란스러워하고 있습니다. 둘 다 마치 sth처럼 보입니다. 빈 인스턴스가 생성 될 때 어떻게 두 인스턴스를 구별 할 수 있습니까? 어쩌면 좋은 예가 될 것입니까?

차이점을 찾아야 만한다면, 실제로 빈이 만들어지면 콜백 (call-back) 메서드가 시작되고, 빈 포스트 프로세서는 빈 생성 후에 약간 호출됩니다. 또한 Beanpost procsso가 모든 bean 인스턴스를 하나씩 poc하는 동안 하나의 bean에만 초기화 호출 콜백 메소드 포커스가있을 수 있습니까?

또한 JSR250 주석 @PreDestroy와 @PostConstruct를 위의 두 개념과 비교하고 비교해 봄으로써 다른 점을 설명해 줄 수 있습니까?

도움 주셔서 감사합니다.

+0

Koushik의 봄에 몇 가지 동영상이 있습니다. 시청할 수 있습니다. 유익한 정보를 제공했습니다. – user533

답변

4

이 중 하나를 사용 했으므로 시간이 지났지 만 참조하는 콜백 메서드와 @PostConstruct 메서드는 같은 것으로 생각합니다. 그러나 귀하의 질문에 대답하려면 차이점은 ....

1) @PostConstruct (또는 afterPropertiesSet) 메소드는 Bean이 인스턴스화 된 후 호출 될 특정 클래스의 내부 메소드입니다. 이것은 실제로 유형별 작업을 배치하는 곳입니다.

2) BeanPostProcessor는 모든 스프링 빈을 건드린다. 여기서 클래스 별 기능이 아닌 교차 컷 기능을 넣을 수 있습니다.

작은 예는 ... 내 친구와 주소를 추적 할 수있는 작은 주소록 응용 프로그램이 있다고 가정 해보십시오. 추적 할 수없는 미친 버그가있는 경우 BeanPostProcessor를 사용하여 "현재 Address.getStreet() ...를 호출하고 Address.getCity()를 호출하는 등 일부 로깅을 사용하여 모든 Spring bean을 래핑 할 수 있습니다. .. ".

이제 주소에서 @PostConstruct 메서드를 사용하여 일부 웹 서비스에 대해 도시/주만있는 주소의 우편 번호를 확인하고 조회 할 수 있습니다.

실제로 도메인 객체 중 하나가 실제로 웹 서비스를 공격하지는 않지만 @PostConstruct가 클래스 관련 항목을 처리하고 BeanPostProcessor가 여러 클래스에 걸친 것을 처리 할 수 ​​있다는 것을 보여주기위한 아이디어입니다. .

또한 BeanPostProcessor에는 postProcessBeforeInitialization과 postProcessAfterInitialization의 두 가지 메소드가 있습니다. postProcessBeforeInitialization과 postProcessAfterInitialization은 Bean의 @PostConstruct 메소드 전후에 실행할 항목을 결정할 수있게 해줍니다. 1. PostProcessBeforeInitializationPostProcessAfterInitialization :

+0

고맙습니다 언급하신 주소가 콩입니까? – Kevin

+0

또한 실제 개발에는 거의 사용되지 않습니까? – Kevin

+0

다행스럽게도이 예제에서 Address는 스프링 빈일 것입니다. 실제로는 많이 사용하지 않았으며 일반적으로 대부분의 초기화를 기본 생성자에 넣었습니다. 하지만 BeanPostProcessor는 일반화 된 로깅과 같이 광범위한 응용 프로그램에 대한 관심이 있다면 훌륭한 도구라고 생각합니다. 그러나 아니요, 아직 사용하지 않았습니다. – jeff

0

콩 포스트 프로세서 인터페이스는 두 개의 콜백 메서드를 가지고있다. PostProcessBeforeInitialization 메소드는 bean의 init-method 또는 afterPropertySet 메소드를 호출하기 전에 호출됩니다.

PostProcessAfterInitialization 메소드는 완료된 bean 초기화 직후에 호출됩니다.

빈 포스트 프로세서는 빈 초기화 전후에 작업을 수행 할 수있는 기회를 제공합니다.

관련 문제