Spring Boot:application.properties 未考虑路径通知

Springboot: application.properties path motification not taken into account

我正在从一个简单的 Spring 引导 (1.x) 项目创建一个 war 文件,我想修改上下文路径。

为此,我有一个 application.properties 文件,如下所示:

server.contextPath=/newpath

项目结构如下:

.
src
    main
    ...
    resources
        application.properties

pom.xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test.api</groupId>
    <artifactId>example</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Test project</name>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>1.5.9.RELEASE</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>example</finalName>
        <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        </plugins>
    </build>
</project>

当我执行 mvn package 时,我得到一个 WAR 文件,其中 application.properties 文件位于 /WEB-INF/classes,内容与我写的那个。但是,在将 war 部署到 Tomcat 时,我无法通过以下方式访问我的 API:

localhost:8080/newpath/example/some_controller

我只能通过以下方式查询:

localhost:8080/example/some_controller

我是不是漏掉了什么?

请确保您已将 spring 启动可执行 jar 项目转换为 war 文件,转换为 war 文件需要三个步骤。请按照此 url 中给出的步骤操作 - https://www.mkyong.com/spring-boot/spring-boot-deploy-war-file-to-tomcat/

server.context-path 属性 仅影响嵌入式容器。当部署到外部容器时,上下文路径的确定方式不同。

对于 Tomcat,您可以将应用程序作为名为 newpath.war 的文件复制到 webapps 目录。然后它应该可以在 localhost:8080/newpath/example/some_controller 获得。