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

标签 spring vaadin web.xml spring-boot

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

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

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 MVC 应用程序——如果是的话,它可能会更容易迁移。目标(根据 github 问题)是获得一个可执行的 JAR。不过,基本计划可能是首先使用 Spring Boot 迁移到 WAR,然后在运行后迁移到 JAR。这是一个非常简单的应用程序,所以我们真正需要做的就是查看 web.xml并将其翻译成相关的 Spring Boot 特性。以下是一些通用指南:

通过扩展 SpringBootServletInitializer 创建可部署的 WAR (例如,在名为 Application 的类中),并添加 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
  • 一个 @Bean类型 FilterFilterRegistrationBean行为类似(如 <filter/><filter-mapping/> )。
  • ApplicationContext在这种情况下,根植于一个 XML 文件中,所以最简单的第一步是 @Import那个成春Application .这个非常简单,只需几行即可重新创建为 @Bean定义。
  • 静态资源可移至/public (或 /static/resources/META-INFO/resources )在类路径根


  • 一旦 WAR 工作,我们通过添加 main 使其可执行我们的方法 Application ,例如
    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 的人阅读这里的一般建议,但也许可以在其他地方开始另一次讨论。

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

    关于spring - 如何从传统的 Java Web 应用程序(使用 web.xml)迁移到 Spring Boot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240939/

    相关文章:

    java - 如何使用camel和Spring监听activemq?

    java - 在 Spring 和 Angular 应用程序中更改 JSON 结构的位置和方式

    java - Tomcat - 请求的资源 () 不可用

    java - 如何将 validator 绑定(bind)到 vaadin 中的 TextFields?

    java - 如何对 Liquibase 数据源配置和 persistence.xml 应用 DRY?

    java - 无法读取 JSON : Unexpected end-of-input in field name

    java - 在 Hibernate 中将 mysql 查询作为 native 查询执行

    java - widgetsets GWT 模块描述文件并在 vaadin 中重新编译你的 widgetset 错误

    java - 如何从授权中排除一个 url

    java - 关于 Spring web.xml <context-param> 和 <listener> 标签的一些信息(引用一个 Hello World 示例)