SpringBoot项目创建bean出错,找不到问题点!

springboot项目,突然开始报错,试了各种方法还是无法解决,求各位给看下,


```java
**org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'linYiApplication': Unsatisfied dependency expressed through field 'illuminationStrategyService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'illuminationStrategyServiceImpl': Unsatisfied dependency expressed through field 'illuminationStrategyDAO'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'illuminationStrategyDAO' defined in file [D:\Develop\IdeaProjects\LinYi\target\classes\com\example\linyi\dao\IlluminationStrategyDAO.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 [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.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:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.example.linyi.dao.ExhaustFanDeviceDAO.getDeviceSwitchStatusList. please check file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml] and file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]**
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.18.jar:5.3.18]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.18.jar:5.3.18]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.6.jar:2.6.6]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.6.jar:2.6.6]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.6.jar:2.6.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.6.jar:2.6.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.6.jar:2.6.6]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.6.jar:2.6.6]
    at com.example.linyi.LinYiApplication.main(LinYiApplication.java:19) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.6.6.jar:2.6.6]
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'illuminationStrategyServiceImpl': Unsatisfied dependency expressed through field 'illuminationStrategyDAO'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'illuminationStrategyDAO' defined in file [D:\Develop\IdeaProjects\LinYi\target\classes\com\example\linyi\dao\IlluminationStrategyDAO.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 [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.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:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.example.linyi.dao.ExhaustFanDeviceDAO.getDeviceSwitchStatusList. please check file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml] and file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) ~[spring-beans-5.3.18.jar:5.3.18]
    ... 25 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'illuminationStrategyDAO' defined in file [D:\Develop\IdeaProjects\LinYi\target\classes\com\example\linyi\dao\IlluminationStrategyDAO.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 [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.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:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]'. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.example.linyi.dao.ExhaustFanDeviceDAO.getDeviceSwitchStatusList. please check file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml] and file [D:\Develop\IdeaProjects\LinYi\target\classes\mapper\ExhaustFanDeviceMapper.xml]


```

参考GPT和自己的思路:

根据错误信息,可以看出是由于在解析 mapper\ExhaustFanDeviceMapper.xml 文件时,发现 Mapped Statements 集合中已经存在了 com.example.linyi.dao.ExhaustFanDeviceDAO.getDeviceSwitchStatusList 这个值,导致解析失败。

建议检查下这个 mapper 文件中是否重复定义了相同的 Mapped Statements,或者确认一下在代码中引用该 mapper 文件时是否有重复引用的情况。另外,也可以尝试清除缓存或者重启项目来解决问题。

getDeviceSwitchStatusList()这个方法有问题,检查配置文件的返回值,方法名

报错信息很明显,提示以及存在dao了getDeviceSwitchStatusList

参考GPT和自己的思路:

根据报错信息,可能是因为 Spring Boot 项目中的 IlluminationStrategyDAO bean 的 sqlSessionFactory 属性注入失败导致的。具体可以从以下几个方面考虑解决:

  1. 检查 spring-mybatis 相关依赖是否正确引入并配置。可以尝试升级版本或重新引入相关依赖。
  2. 检查 ExhaustFanDeviceMapper.xml 文件中是否存在重复的映射语句。
  3. 检查 IlluminationStrategyDAO bean 的相关注解是否设置正确,如 @Repository 是否添加、@Autowired 是否注明了正确的属性等。
  4. 检查 sqlSessionFactory 是否正确配置,例如是否指定了正确的数据源等等。

建议在进行这些检查时,根据报错信息逐步排查问题,找到问题根源后再进行修复。同时,建议在每次进行修改后,尽可能运行项目并仔细观察控制台输出,以便有更快的反馈。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据错误信息可以看出,问题出现在 ExhaustFanDeviceMapper.xml 中的 com.example.linyi.dao.ExhaustFanDeviceDAO.getDeviceSwitchStatusList 映射语句上,因为已经有同名的映射语句存在了。

可能原因有以下几种:

  • 在ExhaustFanDeviceMapper.xml文件中,存在重名的sql语句
  • 在项目的其他Mapper文件中,存在与ExhaustFanDeviceMapper.xml文件中的sql语句同名的sql语句,如果两个文件中有同名的语句,会引发冲突
  • sql语句的id命名有误

解决方法:
可以检查ExhaustFanDeviceMapper.xml文件中是否存在重名的sql语句,如果有,请修改sql语句的id命名。
·
如果没有发现同名sql语句,可以考虑清空项目编译后生成的target目录,重新编译运行。
·
如果还是没有解决问题,可以将ExhaustFanDeviceMapper.xml文件中的sql语句全部注释掉,逐个解除注释,直到找到引起冲突的语句。
·
同时建议使用一些常用的工具,如Mybatis plugin等,可以帮助排查一些类似的问题。