Spring6.0源码 SpringMVC注解版环境搭建时不加载WebApplicationInitializer情况

情况说明:SpringMVC注解版环境搭建的时候,启动时未加载我的WebApplicationInitializer.

import cn.itcast.springmvctest.web.config.AppConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;


//tomcat启动会加载该类。可以基于此实现注解版springmvc
public class AppStarter implements WebApplicationInitializer {
	//tomcat启动调用该方法
	@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
		//创建web的ioc容器
		AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
		context.register(AppConfig.class);//注册配置类

		//添加DispatcherServlet
		DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
		ServletRegistration.Dynamic appServlet = servletContext.addServlet("app", dispatcherServlet);
		appServlet.setLoadOnStartup(1);//启动顺序
		appServlet.addMapping("/*");//映射路径
	}
}

原因:ServletContainerInitializer类之间存在差异- javax. servlet和-jakarta. servlet。tomcat 9.0以及之前版本对应的是javax. servlet,tomcat 10对应的是jakarta. servlet。而spring6.0源码使用的是jakarta.servlet.ServletContainerInitializer,也就是后者。所有必须用tomcat10才行,而我一开始一直使用tomcat9导致一直不会进入该方法。

还有新建gradle模块的时候也需要注意,否则也会导致启动时不加载WebApplicationInitializer。可以参照以下文章搭建

spring源码环境搭建,测试springmvc_springmvc 源码 搭建调试_shuzhou12的博客-CSDN博客

tomcat9和tomcat10区别

浅识Tomcat10和Tomcat9的区别_tomcat9和10区别_yames01的博客-CSDN博客

错误:Task 'wrapper' not found in project ':xxxxxxxx'

重启。重启不行则删除.idea文件重新打开idea

这一个问题就困扰了我一天半,果然还需多加学习🤦‍♂️

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值