当前位置: 首页 > 知识库问答 >
问题:

如何从传统的JavaWeb应用程序(使用web.xml)迁移到SpringBoot?

居焱
2023-03-14

我想把我的项目换成基于spring的产品。

我的第一步是将我的java web应用程序从一个生成的WAR文件转换成一个独立的可执行jar,它由Spring引导驱动。

让我们从GITHUB获取一个开源Web应用示例。vaadinspringweb应用程序

网络。xml文件可以在这里找到。

根上下文文件可以在这里找到。

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

我还提交了Spring启动项目中的一个问题。

共有1个答案

林波鸿
2023-03-14

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

通过扩展SpringBootServletInitializer(例如,在名为Application的类中)创建可部署的WAR,并添加springboot@EnableAutoConfiguration注释。例子:

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan
    public class Application extends SpringBootServletInitializer {

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }

然后添加一些配置:

>

  • 类型为ServletServletRegistrationBean@Bean将该Bean安装在容器中,就像它是

    类型为FilterFilterRegistrationBean@Bean的行为类似于

    本例中的ApplicationContext以XML文件为根,因此最简单的第一步是将@导入到Spring应用程序中。这一个非常简单,只需几行就可以将其重新创建为@Bean定义。

    静态资源可以移动到类路径根中的/Public(或/静态/资源/META-INFO/资源

    一旦战争开始了,我们就可以通过在应用程序中添加main方法使其可执行,例如。

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

    另请参阅关于将JAR转换为WAR的入门指南。

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

    无论如何,我会在转换这个特定的应用程序(源代码罐会很好),并更新这个响应,如果我学到了什么新东西。

  •  类似资料:
    • 我用xcode11运行我的应用程序,并且可以发布它。但是,我看到了苹果发布的下面这则公告; “从2021年4月开始,所有提交到应用商店的iOS和iPadOS应用都必须使用Xcode 12和iOS 14 SDK构建。” 我到底该怎么做?如果我下载Xcode12并运行我的应用程序,SDK会自动更新吗?安装iOS 14 SDK该怎么做? 或者我需要为我现有的豆荚“豆荚更新”吗?在我的项目“iOS部署目标

    • Tomcat10最近发布了,并尝试简单地部署应用程序。由于Java EE 8使用javax.*包名称空间,而Tomcat10使用Java EE 9,后者使用jakarta.*名称空间,因此很难从Tomcat9迁移到10。有什么方法或工具可以做到这一点吗?我认为这对tomcat 7/8也是一样的。

    • 问题内容: 使用Mono将.NET Windows服务迁移到Linux的最佳方法是什么?我一直在尝试避免将应用程序作为计划的命令执行。 是否有可能获得类似行为的服务/系统守护进程(在Linux中)? 问题答案: 在Linux下,重罪是简单的后台进程。没有特殊的控制方法(例如,)作为在Windows中。将服务构建为简单(控制台)应用程序,然后在后台运行它。使用类似于将程序作为Unix守护程序运行的工

    • 我发现这个类是的一部分,但我使用的是。 我复制了hibernate-core-4.2.0.final.jar,hibernate-ehcache-4.2.0.final.jar,cglib-2.2.2.jar,hibernate-jpa-2.0-api-1.0.1.final.jar,hibernate-commons-annotations-4.0.1.final.jar,hibernate-e

    • 我正在探索将java web应用程序移动到Azure应用程序服务的可能性。应用程序on prem在启动时读取属性文件。 是否有可能将属性文件传递或放置到应用服务?如果没有,建议将此类遗留应用程序移动到Azure应用服务?

    • 我正试图将运行在tomcat上的现有应用程序更改为SpringBoot。它一直运行到真正的SpringBoot启动。我有一个类似的应用程序运行在SpringBoot上。这就是我知道它一直运行到Springboot的原因。 我的主要方法: 我尝试使用@componentscan运行main方法,该方法具有如下所示的basePackages: 这无济于事。我尝试在main类的顶部添加@SpringBo