springboot动态设置@RequestMapping的url请求路径

硅谷探秘者 9174 0 0

springboot动态设置@RequestMapping的url请求路径(从配置文件中获取或默认)

controller层
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @ClassName TestController
 * @Description: TODO
 * @Author Jiajiajia
 * @Version V1.0
 **/
@RestController
public class TestController {
    @GetMapping
    public String get(){
        return "get";
    }
    @PostMapping
    public String set(String name){
        return name;
    }
}
配置类1
import com.example.demo.controller.TestController;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.lang.reflect.Method;

/**
 * @ClassName VersionControlRequestMappingHandlerMapping
 * @Description: TODO
 * @Author Jiajiajia
 * @Version V1.0
 **/
public class JiaRequestMappingHandlerMapping extends RequestMappingHandlerMapping {

    private String getUrl="url/get";//默认的请求url
    private String setUrl="url/set";//默认的请求url

    @Override
    public void afterPropertiesSet() {
        super.afterPropertiesSet();
    }
    @Override
    protected RequestMappingInfo getMappingForMethod(Method method, Class handlerType) {
        RequestMappingInfo info = super.getMappingForMethod(method, handlerType);
        if(handlerType== TestController.class){
            if(method.getName().equals("get")){
                return RequestMappingInfo.paths(getUrl).build().combine(info);
            }else if(method.getName().equals("set")){
                return RequestMappingInfo.paths(setUrl).build().combine(info);
            }
        }
        return info;
    }
}
配置类2
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
/**
 * @ClassName VersionControlWebMvcConfiguration
 * @Description: TODO
 * @Author Jiajiajia
 * @Version V1.0
 **/
@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE)
public class JiaWebMvcConfiguration implements WebMvcRegistrations {
    public JiaWebMvcConfiguration(){
        System.out.println("VersionControlWebMvcConfiguration");
    }
    @Override
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping(){
        return new JiaRequestMappingHandlerMapping();
    }
}
private String getUrl="url/get";//get方法默认的请求url
private String setUrl="url/set";//set方法默认的请求url

如果原来的**Mapping中已经有路径,那么请求路径就是 **Mapping中的路径+getUrl的路径

默认请求路径可以从配置文件中获取


评论区
请写下您的评论...
暂无评论...
猜你喜欢
前端(h5) 2476 functiongetQueryValue(key,href){ href=href||window.location.href; varmatch=href.match(newRegExp('[?&]'+key+'=([^&]*)')); returnmatch&&match[1]&&decodeURIComponent(match[1])||''
框架 4126 springbootjson数据不返回对象指定字段在实体类字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
official 896 点在下图中标记为“Start”)。机器人每次只能向下或者向右移一步。机器人试图达到网格右下角(在下图中标记为“Finish”)。问总共有多少条不同?示例1输入:m=3,n=7 输出:28示例2
框架 2456 maven打包替换配文件值pom文件添加profilesprofileiddev/idpropertiesprofileActivedev/profileActive
linux系统 1938 查看配centos7网络IP地址配文件在/etc/sysconfig/network-scripts/ifcfg-ens33下输入命令ifconfig查看当前ip地址修改配输入命令:vim
official 1089 。说明:叶子节点是指没有子节点节点。示例:输入:1/\23\5输出:["1-2-5","1-3"]解释:所有根节点到叶子节点为:1-2-5,1-3解题思递归得方式遍历二叉树(深度优先搜索),
算法基础 11919 ,当有类名,方法名匹配时也会出现。所以有时搜索延时较长。二、idea安装RestfulToolkit插件该插件使用时完全匹配Controller控制层url,不会出现干扰项,所以非常推荐。安装
weblog 1475 在sprongboot项目resources文件夹下创建banner.txt文件,那么在项目启时候就会首先打印banner.txt内内容。在线制作banner网站1.https
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。