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

硅谷探秘者 5546 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) 1827 functiongetQueryValue(key,href){ href=href||window.location.href; varmatch=href.match(newRegExp('[?&]'+key+'=([^&]*)')); returnmatch&&match[1]&&decodeURIComponent(match[1])||''
框架 2353 springbootjson数据不返回对象指定字段在实体类字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
official 331 点在下图中标记为“Start”)。机器人每次只能向下或者向右移一步。机器人试图达到网格右下角(在下图中标记为“Finish”)。问总共有多少条不同?示例1输入:m=3,n=7 输出:28示例2
框架 940 maven打包替换配文件值pom文件添加profilesprofileiddev/idpropertiesprofileActivedev/profileActive
linux系统 714 查看配centos7网络IP地址配文件在/etc/sysconfig/network-scripts/ifcfg-ens33下输入命令ifconfig查看当前ip地址修改配输入命令:vim
official 478 。说明:叶子节点是指没有子节点节点。示例:输入:1/\23\5输出:["1-2-5","1-3"]解释:所有根节点到叶子节点为:1-2-5,1-3解题思递归得方式遍历二叉树(深度优先搜索),
算法基础 4208 ,当有类名,方法名匹配时也会出现。所以有时搜索延时较长。二、idea安装RestfulToolkit插件该插件使用时完全匹配Controller控制层url,不会出现干扰项,所以非常推荐。安装
weblog 766 在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
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础
目录
余生别太较劲,放过自己 才会幸福。