2011-12-08 22 views
10

मैं अपने वसंत एमवीसी आधारित एप्लिकेशन में लॉगिंग गतिविधियों के लिए पहलू का उपयोग कर रहा हूं। मैं अपने आवेदन में किसी भी नियंत्रक को परिभाषित करने के लिए @controller एनोटेशन का उपयोग कर रहा हूं। मैं दो अलग-अलग पैकेज में दो अलग-अलग नियंत्रक कहनाएकाधिक पैकेजों के लिए सिंगल पॉइंटकट निर्दिष्ट करने के लिए

  • com.package1 नियंत्रक 1 वर्ग शामिल है, के नाम के रूप में AController
  • com.package2 नियंत्रक 2 वर्ग शामिल हैं, की यह BController
के रूप में नाम दे सकते हैं

मैं

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

का उपयोग करके नियंत्रकों के एक विशेष पैकेज के लिए पहलू लागू करने में सक्षम हूँ मेरा प्रश्न अधिक है कि एक अलग पैकेज निर्दिष्ट करने का तरीका है मैं एन अभिव्यक्ति (* पैकेज 1। (..)) **।

अभी मैं प्रत्येक पैकेज के लिए एक अलग पॉइंटकट घोषित कर रहा हूं और पहलू में एक अलग aop:before और प्रत्येक पॉइंटकट के लिए aop:after प्रविष्टि। लेकिन मुझे लगता है कि यह एकाधिक पैकेज पॉइंटकट को परिभाषित करने का आदर्श तरीका होना चाहिए।

उत्तर

34

आप बूलियन ऑपरेटरों का उपयोग कर सकते हैं: मामले में

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

आप एनोटेशन का उपयोग

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^