环境:使用tomcat 11.0.0 M13,jdk21,spring框架6.1.5
问题:配置好各个配置文件后,启动tomcat报错
20:25:08.918 [RMI TCP Connection(2)-127.0.0.1] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext-datasource.xml]: Could not open ServletContext resource [/mybatis-config.xml]
配置如下
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
错误提示: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext-datasource.xml]: Could not open ServletContext resource [/mybatis-config.xml]
这里ctrl+点击鼠标是可以跳转到mybatis-config.xml的,其实从这里一眼就能看出来是找不到mybatis-config.xml,只是对Spring框架版本的区别不清楚,找不到为什么出错,导致耽误了很多时间。
这个地方是由于6.0.15的框架声明classpath时,必须要显式的敲出来;
必须是下面这样的显式
<property name="configLocation" value="classpath:mybatis-config.xml"/>
加上之后tomcat就能成功的起来了;
类似的版本更迭带来的必须要显式写出来的还有springmvc的controller中方法的接收前端请求的参数也必须要显式使用@RequestParam(),就算是你的前端请求参数name和接收参数的名称一样,也是需要使用@RequestParam()注解的;
上面的是我自己试出来的,大家有什么不同见解可以发评论区一起学习学习;