Spring AOP Pointcut模板类无法正常工作

时间:2012-08-30 07:19:14

标签: aop spring-aop pointcuts template-classes

我有以下课程作为我的切入点

   public class GenricExceptionMapper implements ExceptionMapper<Exception> {

Logger logger = Logger.getLogger(GenricExceptionMapper.class);
public Response toResponse(Exception exception) {
    logger.error(exception.getStackTrace());
    logger.info("Exception Thrown");
    String res="500 - Internal Server Error";
    exception.printStackTrace();
    logger.debug("Sending Http Response :"+res);
    return Response.status(500).entity(res).build();
}

}

并为其定义了以下建议......

 @Aspect
 public class ExceptionMapperAspect {
Logger logger = Logger.getLogger(ExceptionMapperAspect.class);

//@Context HttpServletRequest servletRequest;

@AfterReturning( pointcut="execution(* toResponse(..))")
public void logExceptionAspect()
{
    //logger.info("statsKey in request object "+servletRequest.getAttribute("statsKey"));
}

当我尝试运行此操作时,我收到以下异常错误消息..

**

  

无法找到接口的类型参数   javax.ws.rs.ext.ExceptionMapper

** 这个类正在抛出错误 http://grepcode.com/file/repo1.maven.org/maven2/org.jboss.resteasy/resteasy-jaxrs/2.2.2.GA/org/jboss/resteasy/util/Types.java#Types.getActualTypeArgumentsOfAnInterface%28java.lang.Class%2Cjava.lang.Class%29

RESTEasy代码的一部分。

这是因为&#39; Spring AOP无法建议实现模板界面的切入点&#39;? 有任何想法吗? Spring AOP如何为实现参数化接口的类创建代理对象?...它是使用CGLIB还是JDK代理?

1 个答案:

答案 0 :(得分:0)

我认为你的问题出在其他地方。我用谷歌搜索你的异常

  

无法找到接口

的类型参数

并发现它与JBoss RESTEasy有关。尝试注释掉你的班级或方面代码的一部分,直到找到罪魁祸首。

顺便说一句,你的toResponse实现会返回一个原始类型。将Response<Exception>设为更加类型安全并避免警告。