How to specify single pointcut for multiple packages

Я использую Aspect для протоколирования действий в моем приложении на базе spring mvc. Я использую @controller аннотации для определения любого контроллера в моем приложении. У меня есть два разных контроллера в двух разных пакетах, скажем

  • com.package1 содержит класс контроллера 1, назовем его AController
  • com.package2 содержит класс контроллера 2, назовем его BController

Я могу применить aspect к одному конкретному пакету контроллеров с помощью

<aop:config>
    <aop:pointcut id="pointcut1"
        expression="execution(* package1.*.*(..))"
        id="policy1" />
    <aop:aspect ref="aspect1" order="1">
        <aop:before pointcut-ref="pointcut1" method="before" arg-names="joinPoint" />
        <aop:after-returning returning="returnValue" arg-names="joinPoint, returnValue" pointcut-ref="pointcut1" method="after"  />
    </aop:aspect>
</aop:config>


<bean id="aspect1" class="com......aspectclass" />

Мой вопрос в том, как указать более одного разного пакета в выражении(* package1. . .(..))**.

Сейчас я объявляю один отдельный pointcut для каждого пакета и в аспекте один отдельный aop:before и aop:after вход для каждого pointcut. Но я думаю, что это идеальный способ определения нескольких пакетов.

12
задан tkruse 30 January 2018 в 04:57
поделиться