运行时
./mvnw spring-boot:run
当前的 Spring Boot 应用程序可以在浏览器中使用当前 URL 打开
http://localhost:8080/
但不是
http://localhost:8080/AppName
因此,即使在 Swagger 中,API 也必须像这样检索
http://localhost:8080/api/swagger.json
而不是这个
http://localhost:8080/AppName/api/swagger.json
那么如何在上下文中添加AppName
呢?过去很简单,web.xml 是基于 xml 的,在基于 java 的配置中我添加了
spring.application.name=AppName
但仍然没有解决问题。
最佳答案
So how to add the AppName in the context?
Spring Boot 默认情况下在根上下文路径(“/”)上提供内容,但我们可以通过不同的方式更改它。
1)使用application.properties/yml
For Boot 1.x, the property is server.context-path=/AppName
For Boot 2.x, the property is server.servlet.context-path=/AppName
2) 使用Java系统属性
public static void main(String[] args) {
System.setProperty("server.servlet.context-path", "/AppName");
SpringApplication.run(Application.class, args);
}
3) 使用操作系统环境变量
在 Linux 上:- $ export SERVER_SERVLET_CONTEXT_PATH=/AppName
在 Windows 上:- 设置 SERVER_SERVLET_CONTEXT_PATH=/AppName
4) 使用命令行参数
$ java -jar app.jar --server.servlet.context-path=/AppName
5)使用Java配置
在 Spring Boot 2 中,我们可以使用 WebServerFactoryCustomizer
:
@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
webServerFactoryCustomizer() {
return factory -> factory.setContextPath("/AppName");
}
使用 Spring Boot 1,我们可以创建一个 EmbeddedServletContainerCustomizer
的实例:
@Bean
public EmbeddedServletContainerCustomizer
embeddedServletContainerCustomizer() {
return container -> container.setContextPath("/AppName");
}
注意:-优先级按降序排列,Spring Boot 使用它来选择有效的配置:
Java 配置
命令行参数
Java 系统属性
操作系统环境变量
当前目录中的application.properties
类路径中的application.properties(src/main/resources或打包的jar文件)
关于java - Spring Boot应用程序启动时没有正确的应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52958440/