SpringBoot自定义请求前缀的代码步骤

 更新时间:2025年10月14日 09:45:04   作者:盹猫  
在web开发中,自定义路径是非常重要的,它可以更容易的区分不同服务和不同的功能模块,使后端服务接口变得更加有序,SpringBoot经常用于web开发,这篇文章就是记录如何在SpringBoot中进行自定义接口路径的开发,需要的朋友可以参考下

前言

在web开发中,自定义路径是非常重要的,它可以更容易的区分不同服务和不同的功能模块,使后端服务接口变得更加有序(完全无规则的接口简直糟糕透了) ,SpringBoot经常用于web开发,当然也可以进行路径的自定义,这篇文章就是记录如何在SpringBoot中进行自定义接口路径的开发.

环境准备

版本

依赖版本
JDK21
SpringBoot3.5.6

Pom依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.6</version>
    </parent>
    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

只需要进行路径配置,只用到基础的springboot的web依赖和JDK.

代码步骤

1、全局路径

在SpringBoot中如果想整个应用程序都使用自定义的路径前缀,可以直接在配置文件中进行配置,该配置主要用于标识运行某一个程序或服务. 配置内容如下:

server:
    servlet:
        context-path: /myapp

这样在请求时就需要在请求时加入 /myapp 前缀作为请求. 即:

http://localhost:8080/users 

变为

http://localhost:8080/myapp/users

2、继承路径

在SpringBoot中同样支持使用继承的方式来实现自定义的路径,即一个子控制器类继承一个父控制器抽象类. 

如下代码:

抽象类

package com.nodcat.api;
 
import org.springframework.web.bind.annotation.RequestMapping;
 
@RequestMapping("/api")
public abstract class AbsUserController {
}

继承类

package com.nodcat;
 
import com.nodcat.api.AbsUserController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class UserController extends AbsUserController {
 
    @GetMapping("/users")
    public String user() {
        return "Hello, user!";
    }
}

这样我们就可以通过下面的请求获取用户:

http://localhost:8080/api/users 

3、配置文件

如果要进行不同的包内所有类的路径的自定义配置,可以通过继承WebMvcConfigurer自定义配置类的方式进行,代码如下:

package com.nodcat.config;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
import java.util.Map;
 
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    //app商家接口
    //app消费者接口
    //管理员接口
    //开放接口
    private final Map<String, String> prefixToPackage = Map.of(
            "/app/merchant", "com.nodcat.api.app.merchant",
            "/app/consumer", "com.nodcat.api.app.consumer",
            "/admin", "com.nodcat.api.admin",
            "/open", "com.nodcat.api.open"
    );
 
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        prefixToPackage.forEach((prefix, pkg) ->
                configurer.addPathPrefix(prefix, c -> c.getPackage().getName().startsWith(pkg))
        );
    }
}

通过上述配置,我们就对app商家接口,app消费者接口,管理员接口,开放接口进行前缀的区分,我们只需要在对应的包内实现对应的控制器就可以了. (在com.nodcat.api.admin包下的所有控制器路径都前缀都会加上/admin,即管理员的控制器)

疑问解答

直接通过继承的方式,在子类使用@RequestMapping 可以实现路径拼接么?

不可以,在子类中使用@RequestMapping会覆盖父类的@RequestMapping的路径定义,路径不会被拼接.

总结

自定义路径可以通过[全局路径 继承路径 配置文件] 的方式进行,你可以在实际开发中按实际需要进行选择.

到此这篇关于SpringBoot自定义请求前缀的代码步骤的文章就介绍到这了,更多相关SpringBoot自定义请求前缀内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java的Lombok之@Builder使用总结

    Java的Lombok之@Builder使用总结

    这篇文章主要介绍了Java的Lombok之@Builder使用总结,当不使用@Builder注解到类上,创建T1的有参构造函数,入参不仅包括T1中所有的参数,还包括T中所有的参数,T2的属性由T1在有参构造函数中通过调用父类构造器的方式赋初值,需要的朋友可以参考下
    2023-12-12
  • spring的pointcut正则表达式的实现

    spring的pointcut正则表达式的实现

    本文主要介绍了spring的pointcut正则表达式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java中类的加载顺序剖析(常用于面试题)

    Java中类的加载顺序剖析(常用于面试题)

    这篇文章主要介绍了Java中类的加载顺序剖析(常用于面试题),本文直接给出代码实例和运行结果,给后给出了加载过程总结,需要的朋友可以参考下
    2015-03-03
  • Java cglib动态代理原理分析

    Java cglib动态代理原理分析

    这篇文章主要介绍了Java cglib动态代理的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-05-05
  • Spring Boot集成JasperReport生成文档的方法

    Spring Boot集成JasperReport生成文档的方法

    由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲染生成PDF文档,这篇文章主要介绍了Spring Boot集成JasperReport生成文档,需要的朋友可以参考下
    2023-09-09
  • springcloud集成nacos 使用lb 无效问题解决方案

    springcloud集成nacos 使用lb 无效问题解决方案

    这篇文章主要介绍了解决springcloud集成nacos 使用lb 无效,通过查看spring-cloud-starter-gateway jar中的自动配置类的源码,得知,该jar包中是不支持负载均衡的,需要引入spring-cloud-starter-loadbalancer 来支持,需要的朋友可以参考下
    2023-04-04
  • Java泛型可行与不可行的原理示例解析

    Java泛型可行与不可行的原理示例解析

    这篇文章主要为大家介绍了Java泛型可行与不可行的原理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加
    2023-05-05
  • java集合中的迭代器Iterator和数组内置方法及常见的报错解决方案

    java集合中的迭代器Iterator和数组内置方法及常见的报错解决方案

    文章介绍了Java集合框架中迭代器(Iterator)的使用,以及数组和集合的内置方法,重点解释了在遍历集合时删除元素时可能出现的`ConcurrentModificationException`异常,并说明了如何正确地使用迭代器来删除集合中的元素,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • java实现微信小程序加密数据解密算法

    java实现微信小程序加密数据解密算法

    这篇文章主要为大家详细介绍了java实现微信小程序加密数据解密算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 详解使用Spring Security进行自动登录验证

    详解使用Spring Security进行自动登录验证

    本篇文章主要介绍了详解使用Spring Security进行自动登录验证,非常具有实用价值,需要的朋友可以参考下
    2017-09-09

最新评论