一、问题描述:
使用springboot整合spring security时出现的一个映射冲突。错误信息:
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personServiceImpl': Unsatisfied dependency expressed through field 'personDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personDao' defined in file [D:\SSM\demo\target\classes\com\example\dao\PersonDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\SSM\demo\target\classes\mapper\UserMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\SSM\demo\target\classes\mapper\UserMapper.xml]'. Cause: org.apache.ibatis.reflection.ReflectionException: Illegal overloaded getter method with ambiguous type for property enabled in class class com.example.domain.User. This breaks the JavaBeans specification and can cause unpredictable results.
其中最主要的一条错误提示是;
ReflectionException: Illegal overloaded getter method with ambiguous type for property enabled in…
。
由于这个问题会导致很多映射的问题,都是因为这个引起的。
报错的主要原因是因为,在写User的实体类时,实现了UserDetails类,默认实现了isEnabled()方法,但是我自己类中有enabled变量,有getEnabled()方法,
@Override
public boolean isEnabled() {
return false;
}
public Boolean getEnabled() {
return enabled;
}
二、解决办法
1、因为isEnabled是 @Override,因此只能把getEnabled方法删除即可。