整合mybatis-plus报错Unsatisfied dependency expressed through field ‘baseMapper‘:

文章讲述了作者在使用SpringCloud学习过程中遇到的BeanCreationException错误,由于版本不兼容,通过升级SpringBootstarter-parent中的Druid和MyBatisPlus版本解决了问题。

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

2023-12-01T21:12:43.843+08:00 ERROR 28824 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'paymentController': Injection of resource dependencies failed
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:323) ~[spring-context-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[spring-beans-6.0.11.jar:6.0.11]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942) ~[spring-context-6.0.11.jar:6.0.11]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[spring-context-6.0.11.jar:6.0.11]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.9.jar:3.0.9]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.9.jar:3.0.9]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.9.jar:3.0.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.9.jar:3.0.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.9.jar:3.0.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.9.jar:3.0.9]
	at com.mypro.springcloud.Payment8081Application.main(Payment8081Application.java:11) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.0.9.jar:3.0.9]

关于这个错误,网上的那些方法比如加@Mapper或者@MapperScan之类,我都试过,对我没有用。

我是在跟着尚硅谷学习的springcloud的过程中遇到,因为尚硅谷的老师讲课的版本比较老了,所以所有版本都是我自己改的,这也就造成悲剧——报错Unsatisfied dependency expressed through field 'baseMapper'。就是因为版本问题,版本不兼容(问chatgpt的时候它给出的可能性之一),但是我不知道哪个版本是不兼容的那个,又要改成什么版本。(如果有网友知道该怎么辨别的话,可以发在评论区供大家一起学习)。

但是我想到了我要使用的springboot的版本是3x,spring-boot-starter-parent里面是整合了很多第三方组件的版本,那么我就直接将自己使用的改成spring-boot-starter-parent内置的一样就行了。果不其然,成功了。

改后的:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <junit.version>4.13.2</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.18.28</lombok.version>
    <mysql.version>8.1.0</mysql.version>
    <druid.version>1.2.19</druid.version>
    <mybatis.plus.spring.boot.version>3.5.3</mybatis.plus.spring.boot.version
</properties>

主要是改了druid的版本和mybatis-plus的版本。

这个主要是给大家提供一个新的解决方向。

### 解决方案 在Spring Boot项目中,`org.springframework.beans.factory.UnsatisfiedDependencyException` 是由于依赖注入失败引起的。具体到 `userController` 和 `userService` 的问题,可能的原因包括但不限于以下几种: #### 1. **未正确扫描Mapper接口** 如果使用了MyBatis框架中的 `@MapperScan` 注解来注册Mapper接口,而该注解被遗漏或错误配置,则可能导致无法找到对应的Bean实例。例如,在启动类上缺少如下声明[^3]: ```java @MapperScan("com.example.mapper") // 替换为实际的包路径 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 2. **UserService Bean未被Spring管理** 确保 `userService` 被标记为Spring容器可识别的组件。通常可以通过以下方式实现: - 使用 `@Service` 或其他类似的注解(如 `@Component`),将其标注为Spring Bean。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; // 方法实现... } ``` 如果没有正确标注这些注解,Spring将不会自动装配此服务。 #### 3. **UserMapper未正确定义或映射** 当 `userMapper` 报告异常时,可能是其XML文件位置不匹配、SQL语句有误或是接口本身存在问题。确认以下几点: - Mapper接口需位于指定的基础包下; - XML文件应放置于资源目录下的对应子文件夹内,并遵循命名约定; - 如果采用注解形式编写查询逻辑,请验证方法签名是否符合规范并已启用支持功能。 另外需要注意的是,某些情况下即使上述条件均满足仍会抛出异常,这往往是因为事务传播机制设置不当所致[^2]。 综上所述,针对此类问题可以从以下几个方面入手排查原因并采取相应措施加以修复。 --- ### 示例代码调整建议 以下是经过优化后的结构化样例供参考: ```java // 启动入口处增加Mapper扫描范围设定 @MapperScan("com.yourproject.mapper") @SpringBootApplication public class DemoApplication { public static void main(String[] args){ SpringApplication.run(DemoApplication.class,args); } } // 定义业务层处理单元 @Service public class UserServiceImpl implements UserService{ @Resource(name="baseMapper") private BaseMapper<User> mapper; public List<User> getAllUsers(){ return mapper.selectList(null); } } ``` 通过以上修改能够有效规避因依赖关系缺失所引发的一系列连锁反应。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈,啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值