Spring Boot 多种方式更改上下文路径

news2025/1/16 16:39:26

1. spring boot上下文路径概述

默认情况下,Spring Boot 在根上下文路径(“/”)上提供内容。

尽管通常最好采用约定而不是配置,但有时我们确实希望拥有自定义路径。
在此快速教程中,我们将介绍配置它的不同方法。
在这里插入图片描述

2. 直接设置server.servlet.context-path

与许多其他配置选项一样,可以通过设置属性server.servlet.context-path来更改 Spring Boot 中的上下文路径。

请注意,这适用于 Spring Boot 2.x。对于 Boot 1.x,该属性为 server.context-path
有多种设置此属性的方法,让我们逐一看一下。

2.1 使用application.properties/yml设置

改变上下文路径最直接的方法是在application.properties / yml文件中设置属性:

server.servlet.context-path=/baeldung

2.2. 通过Java系统属性设置

我们还可以在上下文初始化之前将上下文路径设置为 Java 系统属性:

public static void main(String[] args) {
    System.setProperty("server.servlet.context-path", "/test");
    SpringApplication.run(Application.class, args);
}

2.3. 通过操作系统环境变量设置

Spring Boot 还可以依赖于操作系统环境变量。在基于 Unix 的系统上,我们可以这样写:

$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung

在 Windows 上,设置环境变量的命令是:

> set SERVER_SERVLET_CONTEXT_PATH=/baeldung

注意:上述环境变量适用于 Spring Boot 2.xx 如果我们有 1.xx,则变量为SERVER_CONTEXT_PATH

2.4. 命令行参数设置上下文

我们也可以通过命令行参数动态设置属性:

$ java -jar app.jar --server.servlet.context-path=/baeldung

在这里插入图片描述

3. Java 代码配置容器上下文

现在让我们通过使用配置 bean 填充 bean 工厂来设置上下文路径
使用 Spring Boot 2时,我们可以使用 WebServerFactoryCustomizer

@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
  webServerFactoryCustomizer() {
    return factory -> factory.setContextPath("/baeldung");
}

如果使用 Spring Boot 1,我们需要创建EmbeddedServletContainerCustomizer的实例 :

@Bean
public EmbeddedServletContainerCustomizer
  embeddedServletContainerCustomizer() {
    return container -> container.setContextPath("/baeldung");
}

4. 不同包名下的请求前缀设置

这个配置方法,在很多场景尤为重要,如果一个分布式架构想改装成单体架构,如果把某些组件服务合并到一个项目里面,请求前缀都会统一成一个,这个时候就需要为每个模块组件根据包名单独设置前缀路径。

以下分为webflux应用和webmvc应用两类进行不同包名下的请求自定义前缀配置

4.1 若为webflux应用

在这里插入图片描述

新建一个java配置类,实现WebFluxConfigurer接口,如下代码所示:

public abstract class WebFluxPathConfig implements WebFluxConfigurer
{

    @Override
    public void configurePathMatching(PathMatchConfigurer configurer)
    {
        configurer.addPathPrefix("/test", cla -> {
            return cla.getName().startsWith("com.sinhy.test");
        });
    }
}

4.2 若为webmvc应用

在这里插入图片描述

新建一个java配置类,实现WebMvcConfigurer接口,如下代码所示:

public abstract class WebFluxPathConfig implements WebMvcConfigurer
{

    @Override
    public void configurePathMatching(PathMatchConfigurer configurer)
    {
        configurer.addPathPrefix("/test", cla -> {
            return cla.getName().startsWith("com.sinhy.test");
        });
    }
}

5. 配置的优先顺序

在这里插入图片描述

有了这么多的选择,我们最终可能会对同一属性有多种配置。
以下是 按降序排列的优先级顺序, Spring Boot 使用该优先级顺序来选择有效配置:

  1. Java 配置
  2. 命令行参数
  3. Java 系统属性
  4. 操作系统环境变量
  5. 当前目录中的application.properties
  6. 类路径中的application.properties ( src/main/resources或打包的 jar 文件)

6. 结论

在这篇简短的文章中,我们介绍了在 Spring Boot 应用程序中设置上下文路径或任何其他配置属性的不同方法。

其实,本文只是通过上下文路径这一个参数去做的介绍,该方法适用于springboot的任何参数配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gitlab-CI

官网 ## gitlab-ci 完整语法 https://docs.gitlab.cn/jh/ci/yaml/index.html 原理 流程图 说明 GitLab Runner 是 GitLab CI/CD 的一个组件&#xff0c;用于运行构建、测试和部署作业。它是一个开源项目&#xff0c;允许您在专用、共享或云计算资源上执行作业。 GitLab Run…

保姆级教程,一文了解LVS

目录 一.什么是LVS tips: 二.优点&#xff08;为什么要用LVS&#xff1f;&#xff09; 三.作用 四.程序组成 五.LVS 负载均衡集群的类型 六.分布式内容 六.一.分布式存储 六.二.分布式计算 六.三.分布式常见应用 tips&#xff1a; 七.LVS 涉及相关的术语 八.LVS 负…

轻舟智问大语言模型算法分析报告

一、算法全周期行为分析 1. 算法安全 信息内容安全&#xff1a;通过输入输出内容风控处理&#xff0c;确保生成的内容不涉及违法或不当信息。 信息源安全&#xff1a;模型支持用户挂载知识内容进行增强&#xff0c;确保使用高质量的知识来源。 2. 算法监测 信息安全监测&#x…

day23(mysql主从脚本与mysql详细语句介绍)

一、mysql主从脚本 在同步时&#xff0c;对删除和修改都比较慎重&#xff08;监控同步时&#xff09; mysql主从搭建 前提软件libaio&#xff0c;rsync 1.主 2.从 3.同步 4.测试 注意&#xff1a;先执行从服务器的脚本&#xff0c;再执行主服务器脚本 master-mysql配置…

Vue3+setup使用vuemap/vue-amap实现地图相关操作

首先要下载依赖并且引入 npm安装 // 安装核心库 npm install vuemap/vue-amap --save// 安装loca库 npm install vuemap/vue-amap-loca --save// 安装扩展库 npm install vuemap/vue-amap-extra --save cdn <script src"https://cdn.jsdelivr.net/npm/vuemap/vue-a…

ArcGIS基础:自定义创建点线面等样式符号以方便使用

有时&#xff0c;使用ArcGIS自带的符号样式库无法满足我们使用要求&#xff0c;还需要进行调整&#xff0c;可能会浪费一些时间&#xff0c;那么自己新建一些样式符号备用&#xff0c; 需要的时候直接使用&#xff0c;会节省很多时间&#xff0c;大家学会之后&#xff0c;对学…

ctfshow-web入门-sql注入(web196-web200)堆叠注入

目录 1、web196 2、web197 3、web198 4、web199 5、web200 1、web196 对输入长度做了限制 输出 flag 的条件&#xff1a; if($row[0]$password){$ret[msg]"登陆成功 flag is $flag";} 其中 $row[0] 表示从数据库查询结果中提取的某一行的第一个字段值&#x…

Linux网络编程5

IO多路复用 1.IO模型 在unix/linu下主要有四种I/O模式&#xff1a; 阻塞I/O: 最常用 大部分程序使用的都是阻塞模式的I/O 阻塞I/O 缺省情况下&#xff0c;套接字建立后所处于的模式就是阻塞I/O模式 读操作&#xff1a;read,recv,recvfrom 写操作&#xff1a;write,send …

【最新】推荐7款智能AI写作论文生成网站工具

在当前的AI技术浪潮中&#xff0c;智能AI写作工具已经成为了学术研究和论文撰写的重要助手。本文将推荐7款高效且功能全面的智能AI写作论文生成网站工具&#xff0c;并重点介绍其中备受好评的千笔-AIPassPaPer。 1. 千笔-AIPassPaPer 千笔-AIPassPaPer是一款集多种功能于一体…

最近在写的支付模块

最近再写支付模块就到处借鉴 旨在回顾一下。 1.确认订单功能 使用场景是&#xff1a;用户在选择好购物车后&#xff0c;或者是直接选择商品后&#xff08;选择商品封装为购物车&#xff09; 这样做是根据尚硅谷来学习的 目前需要这些属性&#xff0c;原因是在确认订单页面后…

如何采集淘宝商品评论?

采集商品评论对于企业和消费者都至关重要。它不仅帮助企业了解产品优势与不足&#xff0c;指导产品改进和市场策略调整&#xff0c;还能通过积极回应顾客反馈增强品牌忠诚度。对消费者而言&#xff0c;真实客观的评价是决策的重要参考&#xff0c;有助于避开潜在问题&#xff0…

Apache Tomcat 7下载、安装、环境变量配置 详细教程

Apache Tomcat 7下载、安装、环境变量配置 详细教程 Apache Tomcat 7下载Apache Tomcat 7 安装Apache Tomcat 7 环境变量配置启动 Apache Tomcat 7测试Tomcat7是否启动成功 Apache Tomcat 7下载 1、下载地址&#xff0c;找到Archives 链接: 官网下载地址 2、找到Tomcat 7&…

Linux查看系统线程数

Linux查看系统线程数 查看线程数查看进程内的线程统计线程数 查看线程数 想要查看Linux操作系统允许的最大线程数&#xff0c;可以通过命令 ulimit -a返回配置项的详细说明&#xff1a; # core文件的最大值为100blocks core file size (blocks, -c) 0# 进程的数…

[区间概率预测]CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于改进自适应核密度估计实现区间预测

[区间概率预测]CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于改进自适应核密度估计实现区间预测 【原创区间概率预测】CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于卷积神经网络-双向长短期记忆神经网络-注意力机制结合自适应带宽核函数密度估计的多变量时序预测【点预测…

【51单片机仿真】基于51单片机设计的温度检测与高低温报警系统仿真源码设计文档演示视频——文末资料下载

基于51单片机设计的温度检测与高低温报警系统仿真设计 演示视频 基于51单片机设计的温度检测与高低温报警系统仿真 系统功能简介 1、实时温度测量&#xff0c;可调整温度值 2、显示测量的温度值&#xff0c;按键切换可查看高温和低温报警值 3、可通过按键输入报警最高值以及最…

8/8总结

1.三分 | 函数 虽然提示很明显了&#xff0c;但是还是没掌握套路&#xff0c;看了题解才会的&#xff0c;估计也有四分&#xff0c;就是三次方的形式。 例子&#xff1a; 2 1 2 0 0 2 2 0 0 2 -4 2AC: #include<bits/stdc.h> using namespace std; const int maxn1001…

动态规划(一)

目录 &#xff08;一&#xff09;递归到动规的一般转化方法 &#xff08;二&#xff09;动规解题的一般思路 1. 将原问题分解为子问题 2. 确定状态 3. 确定一些初始状态&#xff08;边界状态&#xff09;的值 4. 确定状态转移方程 &#xff08;三&#xff09;能用动规解…

【Android Studio】Webview 内核升级得三种方法

【Android Studio】Webview 内核升级得三种方法 前言X5 腾讯组件crosswalk开源项目webview升级加载的内核&#xff08;完美解决&#xff09;总结 前言 在APP 中进行网页加载&#xff0c;一般采用原生自带的Webview 组件&#xff0c;但在需要加载高版本网页的时候&#xff0c;有…

工业三防平板助力MES系统打造工厂移动式生产管理

随着工业4.0时代的到来&#xff0c;智能制造、数字化车间等概念层出不穷&#xff0c;生产过程的可视化管理也成为了企业提升效率、优化生产的关键。而工业三防平板&#xff0c;凭借其坚固耐用、功能强大、便携易用等特性&#xff0c;成为了实现生产过程可视化管理的重要利器&am…

SQL注入实例(sqli-labs/less-21)

与第20关无异&#xff0c;只多了一步base64加密 0、初始页面 1、确定闭合字符 2、爆库名 3、爆表名 4、爆列名 5、查询最终目标