Unable to instantiate org.mybatis.spring.boot.autoconfigure.MybatisDependsOnDatabaseInitializationDetector [org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitializationDetector]
时间: 2023-07-02 13:05:38 浏览: 1834
这个错误通常是由于 Mybatis 的自动配置与 Spring Boot 的自动配置产生冲突导致的。一种解决方法是在 `application.properties` 或 `application.yml` 中显式地禁用 Mybatis 的自动配置,然后手动配置 Mybatis。
具体来说,可以在 `application.properties` 中添加以下配置:
```
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.domain
mybatis.configuration.map-underscore-to-camel-case=true
spring.autoconfigure.exclude=org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
```
或在 `application.yml` 中添加以下配置:
```
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.domain
configuration:
map-underscore-to-camel-case: true
spring:
autoconfigure:
exclude: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
```
然后,手动配置 Mybatis,例如:
```java
@Configuration
@MapperScan("com.example.mapper")
public class MybatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
```
注意,上面的示例代码中,`@MapperScan` 指定了 Mybatis Mapper 接口所在的包名,`SqlSessionFactory` 和 `SqlSessionTemplate` 都需要手动配置。
阅读全文