2012-07-17 4 views

답변

4

인터페이스 기반 프록시를 사용하는 경우 (기본값) 스프링은 Proxy 클래스를 사용하여 동적으로 프록시를 생성합니다. 해당 클래스와 관련된 파일은 .class입니다.

클래스 기반 프록시를 사용하는 경우 (을 통해) 스프링은 클래스의 구체적인 하위 클래스를 만듭니다. 디버거에서는 YourRealService$$EnhancerByCGLIB$$...과 같은 이름이 붙어 있음을 알 수 있습니다.하지만이 클래스는 메모리 내에서만 생성되고 디스크에 저장되지 않습니다.

실제로 AOP를 보려는 경우 을 사용해야하고 컴파일 시간 짜기가 필요합니다. 너무 많은 일. 따라서 결론은 그들이 일하는 것을 신뢰하는 것입니다. 그리고 그렇지 않은 경우 스택 추적을 검사하십시오.

+0

멋진 설명을 해주신 Tomasz에게 감사드립니다. 나는 그들이 일하는 것을 믿을 것이다 :) 나의 마음 속에 여전히 한 가지 질문이있다. AOP를 사용하는 동안 AOP가 하위 클래스를 작성하기 때문에 메모리 제약 조건을 고려해야한다고 많은 사람들이 말하는 이유는 무엇입니까? 이 올바른지? AOP가 클래스를 생성하더라도, 프록시가 생성 한 클래스 만 사용하고 우리가 생성 한 클래스는 사용하지 않습니다. –

+0

@KhalidAnsari : 동적으로 생성되는 많은 클래스 ('Proxy'를 통해 생성 된 동적 프록시에는 적용되지 않는다고 생각합니다)는 PermGen 공간 (힙이 아님)을 차지합니다. 나는 그 문제에 대해 전혀 생각 해보지 않았지만 그것을 염두에 두라. –

관련 문제