Springboot遇到的注入问题

问题一: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来标注这个类。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,726评论 0 3
  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,424评论 0 2
  • 转 Spring****基于 Annotation 的简单介绍 2011年03月29日 15:07:00 阅读数:...
    fd649cf896c0阅读 354评论 1 0
  • 来源:关于Spring IOC (DI-依赖注入)你需要知道的一切作者:zejian Dao层(AccountDa...
    杨井阅读 5,364评论 0 27
  • 1.感恩自己基本能顺利和女儿保持连接,切身了解她的需求,发现她的一切行为背后都是我的行为的投射。 2.感恩学校放心...
    盈盈如水阅读 243评论 0 0