使用 spring 注释查看 NoSuchMethodExceptions

Posted

技术标签:

【中文标题】使用 spring 注释查看 NoSuchMethodExceptions【英文标题】:Seeing NoSuchMethodExceptions with spring annotations 【发布时间】:2015-04-23 16:00:00 【问题描述】:

我有一个我支持的应用程序,当我运行它的 JFR 时,我注意到它每秒抛出数百个异常,但除此之外工作正常。我想知道这些异常的原因。

我有以下代码(我不是开发人员,只是服务器管理员):

 sidebar.java contains:
@Controller
public class sidebarController

 vfolder.java contains:
@Controller
public class vfolderController extends sidebarController

 claim.java: contains:
@Controller
public class claimController extends sidebarController

我看到在运行时抛出和捕获的异常来自AnnotationUtils.findAnnotation,并且都是针对 vfolder 和声明中的方法,但是异常消息说它正在寻找侧边栏类中的方法,即 com.company.sidebarController.randomVFolderFunction(java.lang.String)查看com.company.vfolder。我应该如何进行?这是设计使然吗?我无法想象它应该抛出这么多异常。示例堆栈跟踪:

Exception java.lang.NoSuchMethodException "com.company.sidebarController.randomVFolderFunction(java.lang.String)"
java.lang.Throwable.<init>(String)
java.lang.Exception.<init>(String)
java.lang.ReflectiveOperationException.<init>(String)
java.lang.NoSuchMethodException.<init>(String)
java.lang.Class.getDeclaredMethod.<init>(String, Class[])
org.springframework.core.annotation.AnnotationUtils.findAnnotation(Method, Class)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(Method, Class, Object, ExtendedModelMap, ServletWebRequest)
...

这是因为 vfolder 和声明类扩展了侧边栏吗?我只是想知道我可以为开发人员指明什么方向。

【问题讨论】:

【参考方案1】:

尝试从 vfolderController 和 claimController 中删除 @Controller

sidebar.java 包含:

@Controller
public class sidebarController

vfolder.java 包含:

public class vfolderController extends sidebarController

claim.java:包含:

 public class claimController extends sidebarController

或Abstract Controller

【讨论】:

我对扩展控制器做了更多阅读,***.com/questions/15907494/… 中的评论建议扩展类应该有@Controller,而不是基类。并不是说我知道其中的含义,我只是想在这里的推理背后有一个可能的解释,我可以将其传递给开发人员。

以上是关于使用 spring 注释查看 NoSuchMethodExceptions的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 注释。 + Jetty 9 + 查看解析器 - 找不到 jsp 页面

Spring Security,注释@Secured 不起作用

在Spring中启动时执行方法

Spring mvc 3.1 tomcat 7-404不解析jsp但控制器注释工作正常

哪个是 CDI @Produces 注释的 Spring 等效项?

Spring的@ModelAttribute方法注释[重复]