Spring Boot集成Mybatis 常见错误二——NoSuchBeanDefinitionException UnsatisfiedDependencyException

             NoSuchBeanDefinitionException,报错了,剑客立即马不停蹄的去百度度娘,发现这个问题是没有找到bean类,此时,立即去bean类查看,发现没有问题,而且代码在别人的电脑上也能跑通,此时就立马着手是配置的问题,没有找到是没有扫描的问题。

@SpringBootApplication
//@EnableScheduling //开启定时器
//@EnableCaching //开启缓存
@MapperScan("zzsxt.mapper")

public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

   扫描文件主要是pom.xml的配置和文件配置,bean 无注解,普通扫描,此时小编关注pom.文件,发现配置是这样的

             
                src/main/java
                
                    **/*.xml
                
                true
            

只扫描了Java下面的文件,而且只扫了.xml文件,于是度娘告诉剑客,需要加上注解

@SpringBootApplication
//@EnableScheduling //开启定时器
//@EnableCaching //开启缓存
@MapperScan("zzsxt.mapper")
@ComponentScan(basePackages = "zzsxt.beans")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

运行,哦,果断这个问题解决了,但是又报了个异常,如下:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'UserCardTest': Unsatisfied dependency expressed through field 'userCardService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'zzsxt.service.UserCardService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

这个错误最坑人,说是创建Test测试类是无法创建bean ,搞得我一度怀疑Junit有问题甚至重建项目,后面仔细一读才发现说是service创建失败,所以说,读题很重要,英语很重要,剑客的英语就是有点水啦~~~~

    好的,找到问题,同理和bean实体类的想法一样,也是没扫描到,加入注解,在启动类上

@SpringBootApplication
//@EnableScheduling //开启定时器
//@EnableCaching //开启缓存
@MapperScan("zzsxt.mapper")
@ComponentScan(basePackages = {"zzsxt.beans","zzsxt.service"})
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

执行,OK,啦啦啦问题解决了,那么问题来了没啥在别人的电脑上可以跑通呢,springboot作为轻量级快速开发,注解式开发都是用注解替代配置文件,同样,如果不加注解,可以配置pom.xm文件


        
        
        
            
                src/main/webapp
                
                META-INF/resources
                
                    **/**
                
                true
            
            
                src/main/java
                
                    **/*.xml
                
                true
            
            
                src/main/resources
                
                    **/*.xml
                    **/*.properties
                
                true
            
            
                src/main/resources
                
                    **/**
                
                true
            
        
    

当然二者选其一,如果不小心两个都写了,一定要注意!!!【springboot是优先扫描注解的,配置注解一定要配置完整,不然还是会报错!!】

 

好了!!这个错误剑客的分享就到这里了,如果你有同样的疑惑,请关注剑客,让剑客与你一起成长!!!

你可能感兴趣的:(案发现场,springboot,mybatis)