如何从传统的Java Web应用程序(使用web.xml)迁移到spring boot?

时间:2013-11-27 11:14:07

标签: spring vaadin web.xml spring-boot

我想将我的项目转换为基于弹簧的产品。

我的第一步是将我的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.

1 个答案:

答案 0 :(得分:12)

据我所知,这个应用程序不是Spring MVC应用程序 - 如果是这样的话,它可能会更容易迁移。目标(根据github问题)是获取可执行的JAR。虽然基本计划可能是首先使用Spring Boot迁移到WAR,然后在运行时再迁移到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);
        }

然后添加一些配置:

  • 类型为@BeanServlet的{​​{1}}将该bean安装在容器中,就好像它是ServletRegistrationBean<servlet/>一样<servlet-mapping/> 1}}

  • 类型为web.xml@Bean的{​​{1}}行为相似(如FilterFilterRegistrationBean)。

  • 在这种情况下,<filter/>植根于XML文件,因此最简单的第一步是<filter-mapping/>进入Spring ApplicationContext。这个很简单,可以用@Import定义在几行中重新创建。

  • 静态资源可以移至类路径根目录中的Application(或@Bean/public/static

一旦WAR工作,我们通过向/resources添加/META-INFO/resources方法使其可执行,例如

main

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

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

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