Добавить аспект в класс реализации, а не интерфейс - PullRequest
3 голосов
/ 07 июля 2011

У нас есть класс, который реализует несколько интерфейсов.Мы хотели бы добавить некоторые pointcut для всего класса, а не для его конкретного интерфейса.

Как это можно сделать с помощью Spring AOP?Можно ли применить аспект к неинтерфейсному классу?

1 Ответ

4 голосов
/ 07 июля 2011

Да, вы должны использовать CGLIB для прокси классов.См. раздел 7.1.3 документов Spring

Spring AOP также может использовать прокси CGLIB.Это необходимо для прокси-классов, а не интерфейсов.CGLIB используется по умолчанию, если бизнес-объект не реализует интерфейс.Поскольку рекомендуется программировать на интерфейсы, а не на классы, бизнес-классы обычно реализуют один или несколько бизнес-интерфейсов.

Магия заключается в определении proxy-target-class посредством следующего ...

<aop:config proxy-target-class="true">
    <!-- other beans defined here... -->
</aop:config>
...