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

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