为什么我的建议/切入点根本没有运行?

时间:2013-07-02 02:29:45

标签: java google-app-engine spring-mvc aspectj

XML配置中存在'aop:aspectj-autoproxy'和'mvc:annotation-driven'。 这两个类都被定义为同一XML内的bean。

在本地/开发环境中使用Spring 3.2.3.RELEASE和Google App Engine 1.8.1。

我的切入点没有执行。

我的建议。在使用@Aspect注释的类中声明。

@Component
@Aspect
public class RequestLimiter {
    private MemcacheService cache = MemcacheServiceFactory.getMemcacheService();

@Pointcut("within(@pcs.annotations.LimitRequests com.zdware.pcs.controllers.PingCollectorController)")
public void methodRequestLimited(){}

 @Around("methodRequestLimited() && args(req,limitRequests)")
     public Object requestGateWay(ProceedingJoinPoint jp, HttpServletRequest req,LimitRequests limitRequests) throws Throwable {

     // do stuff

    }
}

我用来在控​​制器层测试的方法。

@Controller
public class PingCollectorController {
@RequestMapping(value="/test")
@LimitRequests(requestTimeLimit = 1, functionName = "Test")
public String test(){
    return "test"; // this will return me to a jsp that doesnt exist, but my advice is still not executing.
}
 }

1 个答案:

答案 0 :(得分:2)

CGLIB是否在类路径中?需要生成代理(因为你的控制器没有实现接口,spring不能使用更简单的JDK代理)。