美文网首页
Springboot遇到的注入问题

Springboot遇到的注入问题

作者: laoguigui2019 | 来源:发表于2020-04-20 13:42 被阅读0次

    问题一:Autowired注解时报错,提示“Could not autowire. No beans of 'InfconfigDao' type found.”
    解决办法:
    @Autowired注入成员变量,前提是成员变量已被注入到spring容器中,注解的这个类InfconfigDao需要被Spring容器管理,需要在InfconfigDao加上@Component,把普通pojo实例化到spring容器中

    image.png image.png

    问题二:启动项目一直无法注入

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.zgl.interfacetest.dao.InfconfigDao' available:
     expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound
    

    解决办法:
    SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!Application类是指SpringBoot项目入口类。
    这个类的位置很关键: 如果Application类所在的包为:com.zgl.interfacetest,则只会扫描com.zgl.interfacetest包及其所有子包,如果dao、service所在包不在com.zgl.interfacetest及其子包下,则不会被扫描到。
    在启动类中加
    @ComponentScan(basePackages = "com.zgl.interfacetest.dao")


    image.png
    • @controller 控制器(注入服务)
      用于标注控制层,相当于struts中的action层
    • @service 服务(注入dao)
      用于标注服务层,主要用来进行业务的逻辑处理
    • @repository(实现dao访问)
      用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
    • @component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
      )泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

    相关文章

      网友评论

          本文标题:Springboot遇到的注入问题

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