美文网首页凯哥Java-工作总结从零学Java笔录
spring boot 启动的时候required a bean

spring boot 启动的时候required a bean

作者: 凯哥Java | 来源:发表于2018-07-17 09:51 被阅读3次

    Description:

    Field mapper in com.kaigejava.kgblog,service.impl.UserServiceImpl required a bean of type 'com.kaigejava.kgblog.dao.UserDao' that could not be found.

    Action:

    Consider defining a bean of type 'com.kaigejava.kgblog.dao.UserDao' in your configuration.

    SpringBoot启动失败,告诉我Bean配置失败,楼主看了看 该用的注解都用上了 这是咋的回事嘞?

    先看错误的:

    错误的

    //@Component

    @Repository

    public interface UserMapper {

    int insert(UserDomain record);

    List selectUsers();

    }

    这两个注解都是用了,为什么还会报错呢?

    查询:

    解决方案一:

    后来在网上看到网友说要用@Mapper注解,这才把问题解决了

    于是修改:

    解决方案一

    /** * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类

    * * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id

    * 也就是说这个接口是不支持重载的 */

    @Mapper

    public interface UserDao {

    int insert(UserDomain record);

    List selectUsers();

    }

    重新启动,启动正常。访问ok.

    解决方案二:

    先看失败之前的Application(启动类):

    解决方案二 错误前

    @SpringBootApplication

    public class KgblogApplication {

    public static void main(String[] args) {

    SpringApplication.run(KgblogApplication.class, args);

    }

    }

    根据错误提示,没有UserDao这个bean.那么我们就在启动类上将该报扫描进去:

    解决方案二

    ​//@SpringBootApplication

    @SpringBootApplication

    @MapperScan(value = {"com.kaigejava.kgblog.dao"})

    public class KgblogApplication {

    public static void main(String[] args) {

    SpringApplication.run(KgblogApplication.class, args);

    }

    }

    说明:如果使用@Mapper这个注解的话,每个dao都需要添加麻烦。

    而解决方案二使用@MapperScan就可以很好的解决该问题的。

    欢迎访问凯哥个人网站:http://kaigejava.com/article/detail/161

    相关文章

      网友评论

        本文标题:spring boot 启动的时候required a bean

        本文链接:https://www.haomeiwen.com/subject/bjhwpftx.html