前言
该博客用于解决黑马程序员SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术-第29集:Spring整合Myabtis课程
报错问题
吊话和吊图
可能有人也会像我一样,学完了这一集,去快乐的把敲完代码时,总会报错,跑不起来,非常的火大,甚至3-5刷,重复确定自己是不是在哪个重要环节摸鱼漏掉了,直到去找到他们写的源码一一对比,才发现不是我们的问题。
然后就去看报错信息
原报错信息
Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'accountDao': Error creating bean with name 'accountDao' defined in file [/Users/hua/Study/SSM/SSM_Spring-Mybatis/target/classes/Box/Dao/AccountDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory': Error creating bean with name 'sqlSessionFactoryBean' defined in Box.Config.MybatisConfig: Failed to instantiate [org.mybatis.spring.SqlSessionFactoryBean]: Factory method 'sqlSessionFactoryBean' threw exception with message: org/springframework/core/NestedIOException
翻译
创建名为“accountServiceImpl”的bean时出错:通过字段“accountDao”表达的不满足的依赖项:创建文件[/Users/hua/Study/SSM/SSM_Spring-Mybatis/target/classes/Box/Dao/accountDao.classe]中定义的名为“accountDao”的bean时出错:通过bean属性“sqlSessionFactory”表达的不满足的依赖项:创建Box中定义的名称为“sqlSessionFactoryBean”的bean时出错。配置。MybatisConfig:未能实例化[org.mybatis.spring.SqlSessionFactoryBean]:工厂方法“SqlSessionFactoryBean”引发异常,消息为:org/springframework/core/NestedIOException
好了,当我看到这个就更加懵逼了,寻思着咱们代码都**一毛一样,为啥你能跑,而我不行?
解决问题
好了好了,吊图和吊话都说完了,该解决正事了。
其实有时候代码跑不起来报错,并不是100%代码本身问题,它可能会因为有时 IDE 的缓存或配置问题可能会导致类加载或资源访问问题或者是当使用开源库或框架时,这些问题可能会在不同的版本中发生。
解决办法
IDE:尝试重启 IDE 并清理/重建项目
开源库或框架:更新你的框架版本
上面报错我就是更新的我的spring-context版本号
更新前的
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
更新后的
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.18</version>
</dependency>
是的,没有看错,就只需要更新的一个<version>就行了,我当时直接懵了,然后我就去想去搜索原因
搜到了有几个可能的原因可以解释为什么更新 spring-context
的版本后问题得到了解决
-
Bug 修复:新版本可能修复了旧版本中影响
spring-context
与其他组件(如 MyBatis)交互的 bug。 -
依赖兼容性:如果你的项目中还使用了其他 Spring 相关的组件或库,它们可能与
spring-context
的特定版本不兼容。更新spring-context
到新版本可能解决了这些组件之间的兼容性问题。 -
JDK 版本兼容性:如果你使用的 JDK 版本与旧版的
spring-context
不完全兼容,但与新版本兼容,那么更新spring-context
也可以解决这个问题。 -
API 变更:有时库的新版本会更改 API 或内部实现,这可能会影响到使用这些 API 的代码。如果你的项目中恰好使用了
spring-context
中发生变更的部分,并且这些变更解决了之前的问题,那么更新版本就会起作用。 -
第三方库依赖:你的项目中可能还依赖于其他第三方库,这些库可能与
spring-context
的特定版本有依赖关系。更新spring-context
可能间接解决了与这些第三方库之间的兼容性问题。
总之,更新 spring-context
版本后问题得到解决,通常是因为新版本修复了旧版本中的一些问题,或者提供了与你的项目其他部分更好的兼容性