2025-05-05 17:22:22.186 ERROR 25800 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'aboutusController': Unsatisfied dependency expressed through field 'aboutusService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'aboutusService': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'aboutusDao' defined in file [C:\Users\86186\Desktop\基于SpringBoot的企业招投标管理系统的设计与实现\springboot10gv7\target\classes\com\dao\AboutusDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource
时间: 2025-06-08 22:18:29 浏览: 29
### 解决方案分析
在 Spring Boot 项目中遇到 `UnsatisfiedDependencyException` 错误通常是因为某些 Bean 的初始化失败,而该问题可能源于 MySQL 数据库驱动程序版本不兼容或其他配置不当的情况。以下是针对此问题的具体分析和解决方案。
#### 1. **MySQL 连接器版本与数据库版本匹配**
如果使用的 `mysql-connector-java` 版本过旧或与当前 MySQL 数据库版本不兼容,则可能导致连接异常。建议升级至最新稳定版的 `mysql-connector-java`[^1]。例如:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version> <!-- 推荐使用较新的版本 -->
</dependency>
```
同时,在 `application.yml` 或 `application.properties` 文件中更新 JDBC URL 和其他参数以适配新驱动:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_account?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
注意:从 `mysql-connector-java` 8.x 开始,默认的驱动类名称已更改为 `com.mysql.cj.jdbc.Driver` 而不再是 `com.mysql.jdbc.Driver`[^2]。
---
#### 2. **检查 SQLSessionFactory 自动配置逻辑**
根据引用中的描述,`sqlSessionFactory` 是通过 `MybatisAutoConfiguration` 类自动生成的。如果未正确加载数据源或缺少必要的依赖项,则可能会抛出 `UnsatisfiedDependencyException`。可以通过以下方式验证并修复:
- 确保项目的 Maven/Gradle 中引入了 MyBatis-Spring Boot Starter 及其相关依赖:
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
```
- 检查是否存在多个数据源冲突。如果有多个数据源定义,需明确指定主数据源并通过 `@Primary` 注解标记[^3]。
- 若手动配置了 XML 方式的数据源(如 `<bean>` 定义),则应确保其优先级低于自动配置机制,或者完全禁用默认的自动配置功能:
```java
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
---
#### 3. **排查潜在的属性解析问题**
如果 `spring.datasource.*` 属性未能被正确读取,也可能引发类似的错误。可以尝试显式声明这些值而非依赖外部化配置文件。另外,确认是否启用了正确的 Profile 并加载对应的环境变量。
对于基于 XML 的场景,可参考如下片段来替代纯注解的方式完成数据源注入[^3]:
```xml
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
```
此外,还需注意 `jdbc.properties` 文件路径以及其中的内容格式是否正确无误。
---
#### 4. **调试日志辅助诊断**
增加详细的日志级别可以帮助快速定位具体原因。修改 `logback.xml` 或者直接设置控制台打印等级为 DEBUG:
```properties
logging.level.org.springframework.beans.factory=DEBUG
logging.level.com.example.myapp=TRACE
```
查看启动过程中是否有任何警告提示关于无法实例化的组件列表及其关联关系链路。
---
### 总结代码调整示例
最终完整的 `pom.xml` 应包含以下核心部分:
```xml
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
```
同时修正 `application.yml` 如下所示:
```yaml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/db_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
---
阅读全文
相关推荐
















