Spring Boot应用程序启动时没有正确的应用程序名称

时间:2018-10-23 22:02:40

标签: java spring spring-boot

运行时

./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

但仍然无法解决问题。

4 个答案:

答案 0 :(得分:6)

  

那么如何在上下文中添加AppName?

默认情况下,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)使用OS环境变量
   在Linux上:-$ export SERVER_SERVLET_CONTEXT_PATH=/AppName
   在Windows上:-set SERVER_SERVLET_CONTEXT_PATH=/AppName

4)使用命令行参数

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

5)使用Java Config

在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 Config
命令行参数
Java系统属性
操作系统环境变量
当前目录中的application.properties
类路径中的application.properties(src / main / resources或打包的jar文件)

答案 1 :(得分:0)

设置上下文路径

  • Spring Boot 1.x:server.contextPath=/AppName
  • Spring Boot 2.x:server.servlet.contextPath=/AppName

答案 2 :(得分:0)

您应该使用 server.servlet.context-path用于Spring Boot 2.x server.context-path适用于Spring 1.x 在您的application.properties文件中。

答案 3 :(得分:0)

在application.properties中添加以下行(适用于Spring Boot 1.x): $email = DB::table('users')->where('name', 'John')->value('email'); 如果您的版本是2.x,请使用以下命令: server.contextPath=/AppName