2012-10-20 3 views
6

이 발생 :회피 문제 봄 CGLIB 프록시를 사용

는 는) 생성자

B 이중 호출) 다른 방법

에서 호출하는 방법을 인터셉트를 허용하지하지만 스프링 작성

이유 콩과 프록시? 특정 빈 클래스를 확장 한 클래스를 동적으로 생성 한 다음 생성자를 한 번만 호출 할 수 있습니까? 그것은 a)와 b) 공공 및 보호 방법을 해결할 것입니다. 내가 놓친 게 있니?

답변

4

좋은 질문입니다. Spring이 애플리케이션 컨텍스트를 부트 스트랩하는 방법 때문이라고 생각합니다. 먼저 모든 원시 bean을 생성 한 후 사후 프로세서를 적용합니다. AOP 추가 (거래 포함). 이 계층화 된 아키텍처에서는 먼저 정상적인 Bean을 작성한 후이를 랩핑해야합니다. 하나는이 접근법이 상속에 의한 합성보다원칙을 따른다고 주장 할 수있다.

)도 문제가되지 않습니다. 클래스는 생성자에서 초기화를 수행하지 말고 @PostConstruct 메서드에서 수행해야합니다.이 메서드는 한 번만 호출됩니다.

C) 하나, CGLIB 프록시와 생성자 주입을 사용 SPR-3150

볼 수 없습니다하지만 당신의 좌절감을 이해 : 다른 한편으로 이것은 또 다른 문제로 이어집니다. 유일하게 유효한 해결 방법은 우리가 AspectJ를 짜는 것입니다.