springBoot+mybatis报错Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

本文记录了一次启动Spring Boot应用时遇到的MyBatis配置错误,详细分析了sqlSessionFactory或sqlSessionTemplate缺失导致的问题,并提供了两种解决方案:一是引入正确的依赖包;二是通过继承SqlSessionDaoSupport并在子类中设置SqlSessionFactory。

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

报错为:Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

日志很长,报错在末尾

2018-07-12 13:56:41.760  INFO 9476 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.16

2018-07-12 13:56:42.040  INFO 9476 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-07-12 13:56:42.041  INFO 9476 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4259 ms
2018-07-12 13:56:42.057  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.061  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.096  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.101  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.163  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.168  WARN 9476 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.394  INFO 9476 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2018-07-12 13:56:42.402  INFO 9476 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-07-12 13:56:42.402  INFO 9476 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-07-12 13:56:42.403  INFO 9476 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-07-12 13:56:42.403  INFO 9476 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2018-07-12 13:56:42.459  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.471  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.476  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.481  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.485  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.548  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.557  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.564  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.570  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.577  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:42.581  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.603  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.606  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.612  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.622  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.623  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.625  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.637  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.647  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.653  WARN 9476 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.655  WARN 9476 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'brokenOrderMsgListener': Unsatisfied dependency expressed through field 'orderManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.apache.ibatis.session.SqlSessionFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sqlSessionFactory)}
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '*****OrderMapper' defined in file [E:\GIT_workspace\inas-***-server\target\classes\com\****\***\***\dao\*****OrderMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2018-07-12 13:56:43.658  INFO 9476 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2018-07-12 13:56:43.693  INFO 9476 --- [           main] utoConfigurationReportLoggingInitializer : 
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-07-12 13:56:43.804 ERROR 9476 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************
Description:
Field orderManager in com.****.***.***.listener.MsgListener required a bean of type 'org.apache.ibatis.session.SqlSessionFactory' that could not be found.
Action:

Consider defining a bean of type 'org.apache.ibatis.session.SqlSessionFactory' in your configuration.

 

Consider defining a bean of type 'org.apache.ibatis.session.SqlSessionFactory' in your configuration.

 

1.缺少jar包引起

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

引入jar包后问题解决

2.未解决再添加(DaoImpl

extends SqlSessionDaoSupport )
import org.mybatis.spring.support.SqlSessionDaoSupport;

 

@Override
@Resource
public void setSqlSessionFactory(@Qualifier("sqlSessionFactory")SqlSessionFactory sqlSessionFactory){
    super.setSqlSessionFactory(sqlSessionFactory);
}

 

启动Spring Boot项目报错"Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required"通常是由于配置不正确或缺少必要的配置导致的。根据引用中提到的问题,可能是以下几个原因导致的: 1. 缺少MyBatis的配置:确保在Spring Boot项目的配置文件中正确配置了MyBatis相关的属性,包括数据源、Mapper扫描路径等。 2. 缺少SqlSessionFactory或SqlSessionTemplate的配置:在Spring Boot项目中,需要手动配置SqlSessionFactory或SqlSessionTemplate。可以通过在配置类中使用@Bean注解来创建并配置它们。 3. 配置错误:检查配置文件中的属性名是否正确拼写,并确保属性值的类型正确。 以下是一个示例配置类,演示如何正确配置SqlSessionFactory和SqlSessionTemplate: ```java @Configuration @MapperScan(basePackages = "com.example.mapper", sqlSessionTemplateRef = "sqlSessionTemplate") public class MyBatisConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 配置其他属性,如MapperLocations等 return sessionFactory.getObject(); } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } ``` 请注意,上述示例中的`com.example.mapper`是Mapper接口所在的包路径,你需要根据自己的项目结构进行相应的修改。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Qrind

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

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

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

打赏作者

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

抵扣说明:

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

余额充值