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 获得。
我正在从一个简单的 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 获得。