Spring Boot 定义接口的方法是否可以声明为 private?
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
摘要
松哥正在录制TienChin项目视频,使用Spring Boot和Vue3技术栈,探讨了将Controller中的接口方法定义为private,并通过源码解读来回答这个问题。
1.概览
HandlerMethod体系中的类包括HandlerMethod、InvocableHandlerMethod、ServletInvocableHandlerMethod和ConcurrentResultHandlerMethod。这些类分别负责封装处理器和请求方法、增加调用功能、支持@ResponseStatus注解和处理返回值、以及处理异步结果。
2.HandlerMethod
2.1 bridgedMethod
讨论了bridgedMethod的概念,通过一个泛型接口的示例解释了在运行时Java虚拟机会创建bridge method,这种方法在HandlerMethod中作为bridgedMethod变量出现。
2.2 HandlerMethod 介绍
HandlerMethod的创建过程涉及确认handler类型和构建HandlerMethod。HandlerMethod的内部包含参数(parameters)和响应状态(responseStatus)。其中参数使用MethodParameter封装,包括参数序号、嵌套级别、类型、注解等信息。响应状态则处理方法的@ResponseStatus注解。
3.InvocableHandlerMethod
InvocableHandlerMethod能够调用HandlerMethod中的方法,即bridgedMethod。主要属性包括参数解析器resolvers、参数名称查找器parameterNameDiscoverer和WebDataBinderFactory。使用invokeForRequest方法接收请求并调用getMethodArgumentValues获取参数值,然后通过doInvoke执行反射调用。
想要了解更多内容?