如何为我的 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.propertiesapplication.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.propertiesserver.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 Rest 使用自定义异常?

如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?

如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?

如何为 Spring Boot 2 添加自定义 MeterRegisty

如何为JSP配置spring boot mvc app?

如何为 Spring Boot 应用程序外部化 data.sql