使用 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 mvc 3.1 tomcat 7-404不解析jsp但控制器注释工作正常