2025-03-08T22:34:24.922+08:00 INFO 47408 --- [ main] com.zj.sport.SportApplication : Starting SportApplication using Java 17.0.1 with PID 47408 (D:\毕设\软件\工具\sport\target\classes started by 86153 in D:\毕设\软件\工具\sport) 2025-03-08T22:34:24.925+08:00 INFO 47408 --- [ main] com.zj.sport.SportApplication : No active profile set, falling back to 1 default profile: "default" 2025-03-08T22:34:25.706+08:00 INFO 47408 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 9800 (http) 2025-03-08T22:34:25.716+08:00 INFO 47408 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-03-08T22:34:25.716+08:00 INFO 47408 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.36] 2025-03-08T22:34:25.757+08:00 INFO 47408 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-03-08T22:34:25.757+08:00 INFO 47408 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 793 ms 2025-03-08T22:34:25.804+08:00 WARN 47408 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController' defined in file [D:\毕设\软件\工具\sport\target\classes\com\zj\sport\controller\UserController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userDao': Error creating bean with name 'userDao' defined in file [D:\毕设\软件\工具\sport\target\classes\com\zj\sport\dao\UserDao.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required 2025-03-08T22:34:25.806+08:00 INFO 47408 --- [ main]
时间: 2025-03-08 15:12:24 浏览: 106
### 解决Spring Boot 应用启动时由于UserDao中未配置`sqlSessionFactory`或`sqlSessionTemplate`导致的依赖注入失败问题
当遇到 `UnsatisfiedDependencyException` 错误提示,表明应用程序无法找到所需的bean来完成依赖注入。具体来说,在当前场景下,是因为缺少了 `sqlSessionFactory` 或者 `sqlSessionTemplate` 的定义。
为了使MyBatis能够正常工作并成功创建这些组件,可以在项目的配置文件或者Java配置类里指定数据源以及映射器扫描路径:
#### 方法一:通过XML方式引入SqlSessionFactoryBean
如果偏好传统的XML配置方法,则可以考虑如下操作:
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
...
>
<!-- 配置DataSource -->
<bean id="dataSource" .../>
<!-- MyBatis SqlSessionFactory Bean configuration -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mappers/*.xml"/>
</bean>
</beans>
```
#### 方法二:基于注解的方式自动装配
更推荐的做法是在Spring Boot环境中利用其特性简化设置流程。确保已经在pom.xml或其他构建工具中加入了必要的依赖项之后,可以通过编写一个简单的@Configuration类来进行全局性的配置:
```java
import org.apache.ibatis.session.SqlSessionFactory;
import javax.sql.DataSource;
@Configuration
public class MybatisConfig {
@Autowired
private DataSource dataSource;
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory() throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*.xml"));
return sessionFactory.getObject();
}
}
```
此外,还需要确认application.properties或application.yml中有正确的数据库连接参数和其他相关属性设定,比如驱动程序名称、URL地址等[^1]。
最后,检查UserDao接口是否被正确标注为@Mapper或是放置于mybatis.mapper-locations所指向的位置之下。这一步骤至关重要,因为只有这样框架才能识别到具体的持久层实现逻辑[^2]。
阅读全文
相关推荐


















