一、概览
默认情况下,在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应用程序中设置默认访问路径的不同方法,这些方法也可以用于其它的属性配置。