Почему мой аспект не обнаружен для контроллера Джерси (с помощью пользовательской аннотации)?
Я хочу создать Aspect на контроллере Джерси, чтобы измерить, сколько времени потребуется для выполнения сервисов. Я'я борюсь против моего pointcut, так как это нет обнаружен и мой аспект никогда не запускается.
Я пытался использовать много точек, таких как:
execution(@Monitor * *.*(..))
execution(public * *(..))
change the order of @Aspect and @Component
Added a pointcut like this:
@Pointcut("execution(@Monitor * *.*(..))")
public void monitorRequestTargets(){}
@Around("monitorRequestTargets()")
Tried using AOP and CGLIB
Also tried changing the order of configuration in context.xml
Затмение обнаруживает, что мои методы рекомендуются моим аспектом, но это не так.t выполняется во время выполнения. Не могли бы вы дать мне подсказку о том, почему аспект не создан или pointcut нене запустить?
Мой код следующий.
context.xml
мойMonitorAspect
@Component
@Aspect
public class MonitorAspect
{
private static final Logger logger = LoggerFactory.getLogger(MonitorAspect.class);
@Around("@annotation(com.mypackage.Monitor)")
public void logTimeUsage(ProceedingJoinPoint joinPoint) throws Throwable
{
// Store executing method
String method = joinPoint.getSignature().getName();
// Track time
long startTime = System.currentTimeMillis();
joinPoint.proceed();
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
// Log time consumed by executing method
logger.info(method + ": " + duration);
}
}
Пользовательская аннотация My Monitor:
@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Monitor
{
}
Мой контроллер, который я хочу использовать аспект:
@Monitor
@POST
@Consumes("application/json")
@Produces("application/json")
@Path("/{tkn}/test/")
public Response test(
@Context HttpServletRequest httpReq,
@Context UriInfo uri,
String enrollReqJson
) {
Thread.sleep(1000); // Implementation is not important
}
мойpom.xml
org.springframework
spring-context
${org.springframework-version}
commons-logging
commons-logging
org.springframework
spring-orm
${org.springframework-version}
org.springframework
spring-tx
${org.springframework-version}
org.springframework
spring-webmvc
${org.springframework-version}
org.springframework
spring-orm
${org.springframework-version}
com.sun.jersey.contribs
jersey-spring
1.14
org.springframework
spring-aop
org.springframework
spring
org.springframework
spring-core
org.springframework
spring-web
org.springframework
spring-beans
org.springframework
spring-context
com.sun.jersey
jersey-bundle
1.8
com.sun.jersey.contribs
jersey-multipart
1.8
org.aspectj
aspectjrt
${org.aspectj-version}
org.springframework
spring-aop
${org.springframework-version}
org.aspectj
aspectjweaver
${org.aspectj-version}