不改一行代码将servlet工程改造成springboot工程

本文介绍了如何在不修改现有代码的情况下,将一个基于servlet和spring beans的工程平滑迁移到springboot。主要步骤包括移除web.xml中的ContextLoaderListener,创建SpringBootApplication入口类,通过@ImportResource导入xml配置,以及处理新老代码的互相引用问题。通过这种方式,项目可以在保持原有功能的同时,享受springboot带来的便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不改一行代码将servlet工程改造成springboot工程

碰到一个项目,web接口是最基础的servlet3.0,业务逻辑的部分实现还用到了spring beans,web的入口是web.xml,通过tomcat运行。所以web.xml基本上是下面这样:

<listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/spring/*.xml</param-value>
</context-param>

<filter>
</filter>

<servlet>
</servlet>

其他项目都是spring boot,这个“特殊”的项目导致整个团队的技术栈不统一,且这个工程基本用不到很方便的springboot封装,很多时间都需要自己造轮子。

有没有办法改造成SpringBoot工程呢?其实servlet改springboot的迁移指导网上可以搜出来一大把,但基本都是大刀阔斧整个工程直接重构,这种做法对于已经上线的具有流量的重量级服务肯定不可取。

怎样在不修改一行代码的情况下切换到spring boot工程呢?

去掉spring contextloader

熟悉spring mvc的同学应该都知道,spring mvc是如何转载bean的,关键其实就在web.xml的ContextLoaderListener这个Listener,ContextLoaderListener继承ServletContextListener ,这样web启动时执行contextInitialized方法,看下面源码,这时候初始化了WebApplicatonContext。

public class ContextLoaderListener extends ContextLoader implements ServletContextListener {
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值