문제

내가 추가한다면u003Caop:aspectj-autoproxy proxy-target-class="false"/> 스프링 컨텍스트가 시작될 때, 인터페이스를 구현하는 모든 단일 콩은 JDK 프록시를 얻습니다. 프록시 a) 프록시가 필요한 클래스로 프록시가 필요한 클래스로 제한하고 싶습니다.

나는 프록시가 필요한 콩에 대한 XML 콩 정의 내에 AOP : Scoped-proxy stanza를 사용해 보았지만, 이것이 나에게 AOP-Advice를주지 않는 것으로 밝혀졌습니다.

나는 또한 추가를 시도했다u003Caop:aspectj-autoproxy ....> 스프링 XML 파일의 끝 근처에서 프록시가 필요한 모든 콩을 추가하기 전에는 제대로 작동하지 않는 것 같습니다.

나는있다 많은 인터페이스가있는 콩이지만 (잘 정의 된) 소수의 aOP 조언 만 필요하며, 그 프록시는 내 스택 트레이스를 크게 엉망으로 만들고 있습니다. (나는 봄 3.0에서 엿볼 수 있었고 거기에서 가능할 것이라고 의심하지만 시간이 오래 걸리는 것 같습니다).

2.5.x에서 가능합니까?

도움이 되었습니까?

해결책

AbstractAdvisorAutoProxyCreator.java Line 67 (Spring 2.5.6)에서 볼 수 있듯이, 자동 록시 제작자는 실제로 내가 요구하는 것만 수행합니다. 그것은 필요하다고 생각하는 것보다 더 많이 자동 뽑지 않습니다.

그것은 당신이 사용하는 포인트 컷 표현식 이이 클래스가 얼마나 큰 영향을 미치는지에 큰 영향을 미칩니다. 내가 사용했던 주석은

@Around(value="@target(myannotation)")

이는 기본적으로 스프링이 실제 호출 대상의 유형에 따라 가로 채기로 결정하는 프록시를 생성한다는 것을 의미합니다. 이것의 단점은 봄이 이것을하려고한다는 것입니다. 모두 ApplicationContext에서 사용 가능한 Bean. 대신@와 같은 것을 사용하고 있다면 Spring은 인터페이스를 사용하여자가 분류가 이루어져야하는지 결정하며, 이는 ApplicationContext가 구축 될 때 정적으로 결정할 수 있습니다.

그래서 이제는 프록스가있는 두 개의 클래스 만 있습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top