如何为我的 Spring Boot webapp 选择 URL?
Posted
技术标签:
【中文标题】如何为我的 Spring Boot webapp 选择 URL?【英文标题】:How do I choose the URL for my Spring Boot webapp? 【发布时间】:2014-08-18 13:52:55 【问题描述】:我正在使用 Spring Boot 创建一个 Web 应用程序,但我不确定如何将 URL 从 localhost:8080
更改为 localhost:8080/myWebApp
之类的东西。
我在网上看到很多资源引用application.properties
文件并将其添加到类路径中。但是,我不确定该放在哪里。
问题
在我的src/main/resources
?
如何在文件中分配 URL?
【问题讨论】:
【参考方案1】:您需要将属性server.contextPath
设置为/myWebApp
。
查看this 部分文档
设置该属性的最简单方法是在您正在使用的属性文件中(很可能是application.properties
),但 Spring Boot 提供了很多不同的设置属性的方法。查看this 部分文档
编辑
正如@AbdullahKhan 所述,从 Spring Boot 2.x 开始,该属性已被弃用,应替换为 server.servlet.contextPath
,正如 this 答案中正确提到的那样。
【讨论】:
@很高兴它成功了!您的消息系统无法正常工作可能有多种原因。如果您需要帮助找到它,最好开始一个新的 SO 问题,这样每个人都可以看到而不会被当前问题分心 注:如果你想把其他东西放在根上下文“/”中,你也可以设置server.servlet-path
。
一定要包括前导“/”,所以它应该是“/myWebApp”
你如何强制它只使用 RestControllers 并在没有上下文的情况下访问普通控制器?
从 Spring Boot 2 开始,server.contextPath
属性已被弃用。请改用server.servlet.contextPath
。查看this 答案。【参考方案2】:
从 Spring Boot 2 开始,server.contextPath
属性已被弃用。相反,您应该使用server.servlet.contextPath
。
所以在你的 application.properties 文件中添加:
server.servlet.contextPath=/myWebApp
更多详情见:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#servlet-specific-server-properties
【讨论】:
【参考方案3】:在您的src/main/resources
中输入application.properties
或application.yml
并在其中输入server.contextPath
。
server.contextPath=/your/context/here
启动您的应用程序时,该应用程序将在http://localhost:8080/your/context/here
可用。
有关要设置的属性的完整列表,请参阅 Spring Boot 参考指南的Appendix A.。
您也可以在启动应用程序时将其作为系统属性传递,而不是将其放在 application.properties 中
java -jar yourapp.jar -Dserver.contextPath=/your/path/here
【讨论】:
server.context-path
现已弃用,请立即使用 server.contextPath
@dsies 这些实际上是相同的...您可以使用驼色外壳或使用 -
两者都可以。
你如何强制它只使用 RestControllers 并在没有上下文的情况下访问普通控制器?
server.contextPath 在我的 application.properties 被忽略 :( 在 Tomcat 8.5.6 上运行 Spring v1.4.2.RELEASE
@ChristianSchäfer:我也是这样,在 Eclipse 中。我的@SpringBootApplication
类名始终是我的上下文根。你能解决它吗?我正在使用 1.5.3。【参考方案4】:
在 Spring Boot 2 中的属性,例如application.properties
是server.servlet.context-path=/myWebApp
设置上下文路径。
https://docs.spring.io/spring-boot/docs/2.0.1.BUILD-SNAPSHOT/reference/htmlsingle/#_custom_context_path
【讨论】:
【参考方案5】:server.contextPath 或 server.context-path 有效
在 pom.xml 中
-
包装应该是战争而不是罐子
添加以下依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Tomcat/TC server -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在eclipse中,右键项目 --> Run as --> Spring Boot App。
【讨论】:
1.包装应该是战争而不是罐子 - 不正确。它也适用于 Jar 类型。【参考方案6】:标题为Spring Boot Change Context Path的帖子中很好地处理了更改Spring应用程序的上下文路径的问题
基本上,这篇文章讨论了实现这个可视化的多种方法。
-
Java 配置
命令行参数
Java 系统属性
操作系统环境变量
当前目录中的application.properties
类路径中的 application.properties(src/main/resources 或
打包的jar文件)
【讨论】:
以上是关于如何为我的 Spring Boot webapp 选择 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?
如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?