发布网友 发布时间:20小时前
共1个回答
热心网友 时间:15分钟前
在使用Spring Boot整合Mybatis Plus时,可能会遇到mapper的bean对象无法注入的问题。此问题的错误打印信息如下:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerController': Unsatisfied dependency expressed through field 'customerService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.sxt.business.mapper.CustomerMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
接着,出现了多次相同的错误详情,表示无法通过autowire注解获取mapper对象。核心原因是mapper层未被Spring管理,导致Spring无法将mapper层对象放入其IoC容器。
为解决此问题,需确保mapper层被Spring扫描和管理。有以下两种方法:
方法一:在Spring Boot应用的启动类上添加@MapperScan注解,指定mapper所在的包路径。这样做会使得Spring Boot自动扫描并管理所有在此包下标注为@Mapper的类。
方法二:在具体的mapper类上使用@Mapper注解。这样使得该mapper类明确地声明为映射器,Spring会在初始化时自动管理并加入到IoC容器中。
通过上述方法,确保了mapper层被Spring管理,解决了注入问题,从而避免了上述错误信息的出现。