【译】Spring Boot教程(2):5种方法快速改变默认的访问路径

3,699 阅读2分钟

下一篇:【译】Spring Boot教程(3):6种配置程序启动入口的方式

一、概览

默认情况下,在Spring Boot中内置服务器的默认访问路径是:/

虽然遵循惯例优先原则它是一个不错的选择,但是某些情况下我们希望有一个自定义的访问路径。

在本文中,我们将快速介绍一下配置访问路径的不同方式。

二、配置属性

与其它大多数的配置一样,访问路径在Spring Boot中也可以通过改变属性值实现,它所对应的属性是:server.servlet.context-path

请注意,属性server.servlet.context-path只对Spring Boot 2.x适用。

对于Spring Boot 1.x适用的属性是server.context-path

给这个属性赋值的方法多种多样,下面我们一个一个的学习。

2.1 使用application.properties文件

最直接的赋值方式就是在application.properties文件中进行配置:

server.servlet.context-path=/baeldung

除了将application.properties文件放在src/main/ resources中之外,我们也可以将它保存在当前工作目录中(classpath之外)。

2.2 程序系统属性

我们甚至可以在初始化上下文之前将它设置为程序系统属性:

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

2.3 操作系统环境变量

Spring Boot的配置还依赖于OS环境变量。在类Unix的系统上,我们可以在终端中设置环境变量:

$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung

在Windows上,用于设置环境变量的命令为:

> set SERVER_SERVLET_CONTEXT_PATH=/baeldung

上面的环境变量用于Spring Boot 2.x.x,如果我们用的是Spring Boot 1.x.x,该环境变量则是SERVER_CONTEXT_PATH.

2.4 命令行参数

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

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

三、使用Java配置

现在,让我们通过使用配置类加载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");
}

四、配置优先级

这么多的配置方式,最终都是对同一属性进行的配置。

下面是Spring Boot配置加载的优先级从高到低排列:

  • 使用Java配置
  • 命令行参数
  • 程序系统属性
  • 操作系统属性
  • 当前目录中的application.properties
  • classpath中的application.properties

五、 总结

在本文中我们快速介绍了在Spring Boot应用程序中设置默认访问路径的不同方法,这些方法也可以用于其它的属性配置。

本文是Spring Boot Change Context Path的译文