【问题标题】:How do you deploy the "Building REST Services with Spring" tutorial?如何部署“使用 Spring 构建 REST 服务”教程?
【发布时间】:2016-06-13 01:40:47
【问题描述】:

作为 Java 和 Spring 的新手,我一直在学习他们的 REST API 教程。介绍了一个通用的工作流程,您可以在其中嵌入 Jetty/Tomcat,然后运行可执行的 Jar 文件。引入Building REST Services with Spring 教程后,此工作流程似乎发生了变化。他们的bookmarks demo project 使用多模块 Maven 配置。似乎没有在任何地方定义主要清单属性。

Maven 配置当前为每个模块生成一个单独的 jar。

理想的目标是获取书签演示项目,将Swagger 添加到其中,然后循环输入Docker。现实的目标是让项目使用 Jetty 或 Tomcat 运行。

您知道如何使用 Jetty 或 Tomcat 部署 Spring Bookmarks Demo 吗?感谢您的宝贵时间。

【问题讨论】:

    标签: java spring rest maven spring-boot


    【解决方案1】:

    可以在here 找到指南,但简而言之,这些是您必须做的事情:

    1. 注解为@SpringBootApplication的类(main方法所在)必须继承SpringBootServletInitializer并覆盖configure方法(基本示例如下)
    2. 修改构建系统以生成 WAR 文件
    3. 将 Tomcat/Jetty 标记为已提供
    4. 将您的 WAR 文件部署到您的容器(有很多方法可以做到这一点,但它们独立于您的实现)

      @SpringBootApplication
      public class Application extends SpringBootServletInitializer {
      
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
          return application.sources(Application.class);
          }
      
          public static void main(String[] args) throws Exception {
              SpringApplication.run(Application.class, args);
          }
      }
      

    Docker 有一个 SpringBoot 入门指南,我建议您在更改任何内容之前先阅读它,因为 SpringBoot 具有广泛的 Docker 支持,您可能不需要将应用程序更改为 WAR 文件。

    【讨论】:

    • 这很有意义。但是,当我尝试将此方法添加到任何现有应用程序类时,Eclipse 会引发“此编译单元不在 Java 项目的构建路径上”。有什么想法吗?
    • 你不能将它添加到任何你必须将它添加到带有@SpringBootApplication 注释的类中。在 Spring 入门示例中,这通常不称为 Application.java
    【解决方案2】:

    如果项目是 maven 项目,则使用 package 目标使用“mvn package”构建您的部署单元并部署生成的 .war(假设您是这样配置的)。

    如果示例已经配置为使用嵌入式 Jetty 运行,那么您无需构建可部署单元并将其部署到其他任何地方,您只需运行它 - 这就是嵌入式容器的重点;它已经配置为包含它自己的运行时,您只需运行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-14
      • 2017-03-06
      • 2016-12-13
      • 1970-01-01
      • 2015-03-17
      • 2013-02-18
      • 2017-02-20
      • 2011-03-12
      相关资源
      最近更新 更多