Добавить аспект к классу реализации, а не к интерфейсу

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

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


person jdevelop    schedule 07.07.2011    source источник


Ответы (1)


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

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

Магия заключается в том, чтобы определить прокси-целевой класс с помощью следующего...

<aop:config proxy-target-class="true">
    <!-- other beans defined here... -->
</aop:config>
person Andrew White    schedule 07.07.2011