admin管理员组文章数量:1794759
spring mvc 动态添加 RequestMapping
spring mvc 动态添加 RequestMapping
想法总是非常独特,有时候我们想在运行期间动态添加接口,那么就用到了动态添加 RequestMapping了
首先我们得搞清楚 springmvc 请求原理,客户端发起请求,会先去 RequestMappingHandlerMapping 里面去查找,如果找不到,就 404 了。
明白了请求原理,那么动态添加就容易了。只需要往RequestMappingHandlerMapping里面添加一个请求映射就可以了。
AbstractHandlerMethodMapping 提供了 registerMapping 和 unregisterMapping 方法
继承关系:
RequestMappingHandlerMapping -> RequestMappingInfoHandlerMapping -> AbstractHandlerMethodMapping
具体代码:
@Autowired RequestMappingHandlerMapping requestMappingHandlerMapping; public ResultData hello(){ return ResultData.success("hello"); } @PostMapping("get") @ResponseBody public ResultData addRequestMapper() throws IllegalAccessException, InstantiationException { Class<?> entry = this.getClass(); // hello 是方法名,ReflectionUtils 是 org.springframework.util 包 Method methodName = ReflectionUtils.findMethod(entry, "hello"); PatternsRequestCondition patterns = new PatternsRequestCondition("op/api/test/hello"); RequestMethodsRequestCondition method = new RequestMethodsRequestCondition(RequestMethod.POST); RequestMappingInfo mappingInfo = new RequestMappingInfo(patterns, method, null, null, null, null, null); requestMappingHandlerMapping.registerMapping(mappingInfo, entry.newInstance(), methodName); return ResultData.success(); }本文标签: 动态springMVCRequestMapping
版权声明:本文标题:spring mvc 动态添加 RequestMapping 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686619182a87001.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论