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

2019 精帖
0 461

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的路径

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

留言(0)
加载更多
猜你喜欢
  • blog linux安装时分区

    Linux分区挂载点介绍分区类型介绍备注/boot启分区一般100M-200M,boot目录包含了操作系统内核和在启系统过程中所要用到文件。/根分区所有未指定挂载点目录都会放到这个挂载点下。/home用户目录一般每个用户100
  • blog springboot上传文件与回显

    springboot上传文件与回显资源映射:package com.dzqc.yx.controller; import org.springframework.beans.factory.annotation.Value;impo
  • blog 初步探究cglib代理原理

    初步探究cglib代理原理之前我们说了一下jdk代理原理 http://www.jiajiajia.club/weblog/blog/artical/60本章说一下cglib代理,做个笔记1.按照国际惯例,先来个HelloW
  • blog http错误码

    HTTP 错误 400 400 出错 由于语法格式有误,服务器无法理解此。不作修改,客户程序就无法重复此。 HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器证书与登录服务器所需证书不匹配。
  • blog web项目判断是否为ajax异步

    web项目判断是否为ajax异步import javax.servlet.http.HttpServletRequest; public class AjaxUtil { public static boolean isAjax(H
  • blog 迷宫问题-寻找最短

    迷宫问题-寻找最短算法:广度优先搜索数据结构:队列,链表代码实现:<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <title></title> <script> var
  • blog springboot自定义参数解析器-实现分页数据封装

            很多项目在开发时候都会遇到分页问题,一般分页主要用到两个参数page和limit,page是第几页,limit是多少条数据。而一般在数据库时候我们用不到page参数,用到
  • ofc java判断浏览器类型 是否是ie浏览器

    java判断浏览器类型 是否是ie浏览器
  • blog 面试题servlet执行过程

    1.浏览器浏览器向服务器时,服务器不会直接执行我们类,而是到web.xml里寻找名 ①:第一步,浏览器输入访问后,携带了行,头,体 ②:第二步,根据访问找到已注册servlet名称③:第三步,根据映射找到对应s
  • blog java springboot添加或移除定时器(定时任务)

    java springboot添加或移除定时器(定时任务) 工具类 import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang