2011-12-08 24 views
10

Yay mvc tabanlı uygulamamdaki günlük etkinlikleri için Aspect kullanıyorum. Uygulamamdaki herhangi bir denetleyiciyi tanımlamak için @controller ek açıklamaları kullanıyorum. İki farklı pakette iki farklı kontrolör en BController olarak adlandırın izin AController Birden çok paket için tek nokta kesimi nasıl belirlenir

  • com.package2 kontrolörü 2 sınıfını içerdiği en adlandırın izin

    • com.package1 kontrolörü 1 sınıf içerir söylemek zorunda Ben

      <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" /> 
      

      kullanarak denetleyicilerin belirli bir pakete yönünü uygulayabilirim

      sorum daha o biri farklı paket nasıl belirleneceği i n ifade (* paket1. .. (..)) **.

      Şu anda, her bir paket için ayrı bir nokta kesiti ve her bir nokta için ayrı bir aop:before ve aop:after girişini bildiriyorum. Ama bence bu, birden fazla paket noktasını tanımlamak için ideal bir yol olmalı.

  • cevap

    34

    gibi bağlaçlar kullanabilirsiniz:

    expression="execution(* package1.*.*(..)) || execution(* package2.*.*(..))" 
    
    6

    Eğer Ek Açıklamalar kullanmak

    @Pointcut("within(com.package1..*) || within(com.package2..*)") 
    
    İlgili konular