AspectJ AOP无法按预期工作

时间:2015-07-06 13:13:53

标签: spring-mvc aspectj

我正在开发Spring MVC应用程序上的AspectJ AOP实现。我已经编写了Aspect java类,我试图拦截其中一个软件包的所有方法的连接点,例如com.xyz.services。但是AOP总是不能接受那个方案的方法。方面定义如下 -

@Pointcut("execution(* com.xyz.services..*.*(..))")
public void logBefore() {

}
@Before("logBefore()")
public void logHere(JoinPoint joinPoint) {
    System.out.println("In logHere ....");
    logger.info("logBefore is running ....");
    logger.info("hijacked ::::" + joinPoint.getSignature().getName());
    logger.info("joinPoint.getSignature().getDeclaringTypeName() ::::"
                    + joinPoint.getSignature().getDeclaringTypeName());
    logger.info("joinPoint.getSignature().getModifiers() ::::"
            + joinPoint.getSignature().getModifiers());
    logger.info("******************************************************");
}

我在application-context.xml中启用了AOP,如下所示 -

<aop:aspectj-autoproxy proxy-target-class="true">
    <aop:include name='loggingAspect' />
</aop:aspectj-autoproxy>

当我调用webservice时,会调用com.xyz.services中的方法,但是方法永远不会被调用。

我尝试使用不同的切入点,但方面代码从未执行过。

@Pointcut("execution(public * com.xyz.services.ManagerServiceImpl.*(..))")
public void logBefore() {
System.out.println("In Logbefore");}

@Pointcut("execution(public * com.xyz.services.*.*(..))")
public void logBefore() {
System.out.println("In Logbefore");
}    

我在pom.xml上添加了cglib依赖项以启用基于cglib的代理。

<dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
    </dependency>

任何人都可以帮助我解释为什么这些方面没有按预期工作?

1 个答案:

答案 0 :(得分:0)

您是否已正确配置带有注释的课程?

filepermissions=$(docker exec -i container1 stat -c '%s' /home/ubuntu/tryme)