锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产96精品亚洲
,亚洲影院天堂中文av色,日韩精品电影一区亚洲http://m.tkk7.com/star/category/33292.htmlMemozh-cnFri, 25 Jul 2008 16:20:12 GMTFri, 25 Jul 2008 16:20:12 GMT60Sharing common pointcut definitionshttp://m.tkk7.com/star/articles/217586.htmlstarstarFri, 25 Jul 2008 14:53:00 GMThttp://m.tkk7.com/star/articles/217586.htmlhttp://m.tkk7.com/star/comments/217586.htmlhttp://m.tkk7.com/star/articles/217586.html#Feedback0http://m.tkk7.com/star/comments/commentRss/217586.htmlhttp://m.tkk7.com/star/services/trackbacks/217586.htmlWhen working with enterprise applications, you often want to refer to modules of the application and particular sets of operations from within several aspects. We recommend defining a "SystemArchitecture" aspect that captures common pointcut expressions for this purpose. A typical such aspect would look as follows:
package com.xyz.someapp; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect publicclass SystemArchitecture { /** *//** * A join point is in the web layer if the method is defined * in a type in the com.xyz.someapp.web package or any sub-package * under that. */ @Pointcut("within(com.xyz.someapp.web..*)") publicvoid inWebLayer() {} /** *//** * A join point is in the service layer if the method is defined * in a type in the com.xyz.someapp.service package or any sub-package * under that. */ @Pointcut("within(com.xyz.someapp.service..*)") publicvoid inServiceLayer() {} /** *//** * A join point is in the data access layer if the method is defined * in a type in the com.xyz.someapp.dao package or any sub-package * under that. */ @Pointcut("within(com.xyz.someapp.dao..*)") publicvoid inDataAccessLayer() {} /** *//** * A business service is the execution of any method defined on a service * interface. This definition assumes that interfaces are placed in the * "service" package, and that implementation types are in sub-packages. * * If you group service interfaces by functional area (for example, * in packages com.xyz.someapp.abc.service and com.xyz.def.service) then * the pointcut expression "execution(* com.xyz.someapp..service.*.*(..))" * could be used instead. * * Alternatively, you can write the expression using the 'bean' * PCD, like so "bean(*Service)". (This assumes that you have * named your Spring service beans in a consistent fashion.) */ @Pointcut("execution(* com.xyz.someapp.service.*.*(..))") publicvoid businessService() {} /** *//** * A data access operation is the execution of any method defined on a * dao interface. This definition assumes that interfaces are placed in the * "dao" package, and that implementation types are in sub-packages. */ @Pointcut("execution(* com.xyz.someapp.dao.*.*(..))") publicvoid dataAccessOperation() {} }
The pointcuts defined in such an aspect can be referred to anywhere that you need a pointcut expression. For example, to make the service layer transactional, you could write: