Spring Boot报java.lang.IllegalArgumentException:Property 'sqlSessionFactory' or 'sqlSessionTemplate'
Spring Boot报错 java.lang.IllegalArgumentException:Property 'sqlSessionFactory' or 'sqlSessionTemplate'
在一个springboot demo启动的时候出现以下错误 ,
从网上查找 说是 Mapper 路径的问题 , 查找了一下 发现我在两个地方配置了 Mapper路径 错误, 是的程序无法加载 mapper文件导致的 。
1、启动类 里配置的 (@MapperScan("com.example.demo.dao.mapper")),这里开始配置错了
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableTransactionManagement
//@MapperScan("com.example.demo.dao.mapper")
public class Demo7Application {
public static void main(String[] args) {
SpringApplication.run(Demo7Application.class, args);
}
}
2、application.yml 里配置的路径
mybatis:
mapper-locations: classpath*:com/example/demo/dao/mapper/*.xml
这里的错误主要是因为 启动类 里配置的 mapper 路径错误导致的 , 我第一 把启动类里的 mapper路径改正确 , 在启动错误消失, 第二 把重复的 mapper 路径去掉一个 这里 把启动类的mapper路径去掉, 再次启动ok没问题。
(。・v・。)在搭建或使用Spring Boot项目过程中,我们在启动项目时可能会遇到如下异常:
我在遇到此类情况时,经过以下操作使我的项目恢复了正常:
1、检查mapper路径是否正确。若正确,查看在@EnableAutoConfiguration注解后,是否添加了exclude,若有添加,尝试删除。
备注:@EnableAutoConfiguration 作用是从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器;@EnableAutoConfiguration还可以进行排除,排除方式有2中,一是根据class来排除(exclude),二是根据class name(excludeName)来排除。在本项目配置中排除了DataSourceAutoConfiguration类(如下图),导致此类没有正确加载
2、在接口实现类中是否继承了SqlSessionDaoSupport,若有继承,尝试删除此继承。