2009-07-16 2 views
3

저는 인터페이스에 의한 프록시 대신 클래스에 의한 프록시 사용을 고수해야하는 일부 응용 프로그램에서 항상 짜증이납니다. 좀 더 구체적으로 말하자면, 나는 서비스 계층 클래스를 프록시 처리하지만, 어떤 이유로 든 누군가가 인터페이스를 통하지 않고 실제 클래스에 의해 프록시되어야한다고 결정했기 때문에 최종적으로 만들 수는 없습니다 (모두 이러한 클래스의 인터페이스는 어쨌든 있습니다.인터페이스 (Spring)에 의한 프록 싱과 반대로 클래스 별 프록 싱의 이점은 무엇입니까?

인터페이스를 만들 필요가 없다는 것 외에도 Spring의 AOP 구성에서 대상 인터페이스를 기반으로하는 프록시가 아닌 대상 클래스를 통해 프록시 할 실질적인 이유가 있습니까?

답변

4

클래스를 변경하지 않으려는 경우에만; 인터페이스에 의한 프록 싱은 좀 더 유연하기 때문에 더 강력해질 것입니다. 그러나 실제로는 하나의 구현체를 잠그고 싶다면 클래스별로 프록 싱을하면됩니다. 어떤 인터페이스 구현자가 프록시 가능하도록 허용하는 대신 독자적인 클래스 솔루션에 의존하는 상황을 상상할 수 있습니다. 나는 일반적으로 인터페이스를 사용한다고 가정합니다.

+0

다음은 내가 당신의 대답에 대해 정말로 이해하지 못하는 부분입니다. 대상 클래스별로 프록시하면 프록시로 지정한 클래스를 최종으로 만들 수 없습니다. 어떤 이유로 실제 구현을 주입하는 데 의존하도록 코드를 작성한 경우 구현을 확장 할 수 있습니다 (대상 클래스에 의한 프록시 생성의 후보라고 가정). 따라서 구현이 단일 구현에만 한정되지는 않습니다. 단일 상속 나무 ... – MetroidFan2002

관련 문제