【问题标题】:How to migrate from traditional java web application (with web.xml) to spring boot?如何从传统的 Java Web 应用程序(带有 web.xml)迁移到 Spring Boot?
【发布时间】:2013-12-13 00:06:37
【问题描述】:

我想将我的项目切换到基于弹簧的产品。

我的第一步是将我的 java web 应用程序从生成的 WAR 文件转换为独立的可执行 jar,由 Spring Boot 提供支持。

Let's take a open source web application example from github.: Vaadin-Spring Web Application

The web.xml file can be found here.

The root-context file can be found here.

我希望有一些指导我来执行转换。

I have also submit an issue in the spring-boot project.

【问题讨论】:

    标签: spring vaadin web.xml spring-boot


    【解决方案1】:

    据我所知,这个应用程序不是 Spring MVC 应用程序 - 如果是,它可能会更容易迁移。目标(根据 github 问题)是获取可执行的 JAR。不过,基本计划可能是首先使用 Spring Boot 迁移到 WAR,然后在 JAR 工作后迁移到 JAR。这是一个非常简单的应用程序,所以我们真正需要做的就是查看web.xml 并将其转换为相关的 Spring Boot 功能。以下是一些通用指南:

    通过扩展SpringBootServletInitializer(例如在一个名为Application的类中)创建一个可部署的WAR,并添加Spring Boot @EnableAutoConfiguration注解。示例:

        @Configuration
        @EnableAutoConfiguration
        @ComponentScan
        public class Application extends SpringBootServletInitializer {
    
            @Override
            protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
                return application.sources(Application.class);
            }
    

    然后添加一些配置:

    • @Bean 类型的 ServletServletRegistrationBean 将该 bean 安装在容器中,就好像它是 <servlet/><servlet-mapping/> 中的 web.xml 中的 <servlet-mapping/>

    • FilterFilterRegistrationBean 类型的 @Bean 行为相似(如 <filter/><filter-mapping/>)。

    • 在这种情况下,ApplicationContext 植根于 XML 文件,因此最简单的第一步是将 @Import 插入 Spring Application。这个非常简单,只需几行就可以重新创建为 @Bean 定义。

    • 静态资源可以移动到类路径根目录中的/public(或/static/resources/META-INFO/resources

    一旦 WAR 工作,我们通过向我们的 Application 添加一个 main 方法使其可执行,例如

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    

    另请参阅Getting Started Guide on Converting a JAR to a WAR

    正如我所说,这个特定应用程序的最大问题是它不是 Spring MVC 应用程序。正如爱尔兰人可能会说的“如果我想到达那里,先生,我不会从这里开始。”总的来说,这是一个有趣的问题,但我建议其他希望将 Spring 应用程序迁移到 Spring Boot 的人阅读这里的一般建议,但也许可以在其他地方开始另一个讨论。

    无论如何,我会在转换这个特定的应用程序(源代码 jar 会很好)方面大吃一惊,如果我学到任何新东西,我会更新这个响应。

    【讨论】:

    • 我预计随着springboot的发展,越来越倾向于从WAR到JAR。我只是在尝试设置一个开发友好的 pom.xml 时遇到了很多麻烦,这将使我能够使用 springboot + gwt 高效地工作。我正在接受可执行 JAR 概念,通过双重禁用 GWT 运行码头并确保 GWT 编译将源放入 META-INF/资源中,以便在开发期间正常工作。但是,是的,有些人可能想从 JAR 迁移到 WAR,主要是为了部署在计算机上,例如应用引擎。但总的来说,spring boot 作为 JAR 更好。
    • 多战项目怎么样? stackoverflow.com/questions/35632394/…
    • @dave-syer,感谢您的注释,我觉得这很有帮助。我知道这是一篇很老的帖子,我最近被要求评估将一个相对稳定的非 SpringMVC Web 应用程序迁移到 Spring Boot。想法是转换为可执行的 jar 样式,以便能够通过自动缩放部署在云上。您能告诉我您对此有何看法吗?过去 3 年 Spring BOOT 发生的任何变化都会影响或反对。
    • 以上所有内容仍然适用于 AFAIK。 Josh Long 上周在 Twitter 上发布了关于转换为 Spring Boot 的信息。它非常相似(但更短)。
    • 如何迁移 servlet 部分的 init-param 元素?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2021-03-03
    相关资源
    最近更新 更多