会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 Springboot如何动态注册处理请求接口?这个知识点你值得了解一下!

Springboot如何动态注册处理请求接口?这个知识点你值得了解一下

时间:2025-11-04 23:05:46 来源:益强数据堂 作者:应用开发 阅读:242次

环境:springboot2.2.10.RELEASE

编写一个准备用来出来请求的何动方法

@Service public class UserHandler {   @ResponseBody   public Object getUsers(@PathVariable("id") String id, HttpServletRequest request) {     System.out.println(request) ;     return "查询用户ID为: " + id ;   } } 

你的处理程序可以不是受容器管理的Bean。这里还应用了SpringMVC相关的态注一些注解,这些注解都可以像Controller中使用一样。册处

注册接口处理程序

@Configuration public class MappingConfig {   @Autowired   public void setHandlerMapping(RequestMappingHandlerMapping mapping,理请 UserHandler handler) throws NoSuchMethodException {     RequestMappingInfo info = RequestMappingInfo.paths("/users/{id}").methods(RequestMethod.GET).build();     Method method = UserHandler.class.getMethod("getUsers", String.class, HttpServletRequest.class);     mapping.registerMapping(info, handler, method);   } }  创建RequestMappingInfo对象,就是求接一些请求的基本元信息。 获取处理程序的知识方法对象。 通过RequestMappingHandlerMapping注册请求映射对象。源码库点值得解

Spring容器在启动过程中会将所有的何动Controller处理接口方法都包装成RequestMappingInfo对象然后添加到

RequestMappingHandlerMapping对象的一个集合中。

注:容器默认有很多个HandlerMapping对象,态注具体该如何处理初始化那些类接口是册处通过

AbstractHandlerMethodMapping#isHandler决定,该方法是理请个抽象方法具体是由子类来实现的。

public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMapping implements InitializingBean {   protected abstract boolean isHandler(Class<?求接> beanType); } 

RequestMappingHandlerMapping是AbstractHandlerMethodMapping的子类看看它的实现:

public class RequestMappingHandlerMapping {   @Override   protected boolean isHandler(Class<?> beanType) {     return (AnnotatedElementUtils.hasAnnotation(beanType, Controller.class) ||              AnnotatedElementUtils.hasAnnotation(beanType, RequestMapping.class));   } } 

这里判断了当前Bean对象上是b2b供应网否有@Controller注解或者@RequestMapping对象;也就是在容器启动后会将所有的Controller中的接口方法保证注册为RequstMappingInfo对象。

在SpringMVC处理一个请求的知识过程中,有一个流程是点值得解取得相应的HandlerMapping对象。

处理方法参数

处理程序能够接收那些参数?何动

JDK 8的java.util.Optional作为方法参数与注释相结合受到支持具有必需属性(例如@RequestParam、@RequestHeader和其他属性)且等效于required=false。

处理方法返回值

(责任编辑:人工智能)

推荐内容
  • 显卡安装软件教程(以NVIDIA显卡为例,详解显卡安装软件步骤,让电脑性能提升更简单)
  • 6个在团队中使用Git的最佳实践
  • 测试高手进阶之路:接口测试用好“变量”,重复验证也不怕
  • Github上10个超好看 可视化面板,后台管理页面有着落了
  • 课桌电脑置物架的安装教程(简单易懂的步骤让你轻松安装电脑置物架)
  • 搞不定大型项目?4个项目实践看清Vue.js的真正实力