Spring Boot @Autowired 没法自动注入的问题

SpringBoot注解篇之@Resource与@Autowired 大家好,我是AK,最近在整理Java相关技术知识体系化;本篇主要介绍@Resource 注解和 @Autowired的区别以及使用,适合学习spring框架小伙伴了解学习。 阅读详情

Application 启动类:

@SpringBootApplication
@EnableConfigurationProperties
@ComponentScan(basePackages = { "com.testing"})
public class Application {
   @Bean
   RestTemplate restTemplate() {
      return new RestTemplate();}
   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
      System.out.println("成功启动");
   }
Dao层:

public interface UserRepository extends JpaRepository<User, String>{
    User findByUsername(String username);   //
}
Service 层:注入一个继承了JPA 的接口,理论上spring boot 会把JPA 注入repository,该接口是一定不需要实现类的.
上述方法实现了按Username查询User实体,可以看到我们这里没有任何类SQL语句就完成了个条件查询方法。
这就是Spring-data-jpa的一大特性:通过解析方法名创建查询

@Service
public class DataInit {

    @Autowired
    UserRepository userRepository;
}
但是会提示错误:提示@Autowired 不能正常注入:

可正常编译,没法运行,gradle bootrun 时提示错误:

caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.testing.data.UserRepository com.testing.service.DataInit.userRepository; nested exception is org.spring
framework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.testing.data.UserRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate
for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=userRepository)}


Execution failed for task ':bootRun'.
> Process 'command 'C:\Program Files (x86)\Java\jdk1.8.0_101\bin\java.exe'' finished with non-zero exit value 1

总结:

出现该类错误时,可有一下几个问题需要去检查:

1. 检查各类是否加了注解,包括@service,@repository 等等;(注意@Autowired放在service实现上,而不是接口类上面。)

2. 包是否正确扫描到,这个很重要!!!(我的问题就是因为这个)


注意:http://bbs.youkuaiyun.com/topics/391978111?page=1#post-401966615 (#5)

SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!

“Application类”是指SpringBoot项目入口类。这个类的位置很关键:
如果Application类所在的包为:com.boot.app,则只会扫描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,则不会被扫描!
即, 把Application类放到dao、service所在包的上级,com.boot.Application

知道这一点非常关键,不知道spring文档里有没有给出说明,如果不知道还真是无从解决.





解析SpringBoot中@Autowire注解的实现原理 Autowired 是 Spring 框架提供的一种依赖注入方式,它可以自动装配 Bean,并将成员变量、方法参数或构造函数中需要的对象注入到对应的位置。它是基于 Java 的反射机制实现的,能够方便地管理对象之间的依赖关系。Spring Boot 中 @Autowired 注解实现依赖注入的功能是基于 Java 的反射机制实现的。它可以方便地管理对象之间的依赖关系,并提高代码的可读性和可维护性。 阅读详情

相关推荐

Spring Boot 中@Autowired注解的详解和使用

本文详细介绍了Spring Boot中@Autowired注解的使用方法。主要内容包括:1) 注解作用:实现依赖注入,自动将Spring容器中的bean注入到目标对象;2) 三种注入方式:推荐构造函数注入(Spring 4.3+可省略注解),setter方法用于可选依赖;3) 使用场景:基本依赖注入、集合类型注入、可选依赖、处理同类型多个bean等;4) 与@Resource的区别;5) 工作原理及最佳实践建议。文章强调优先使用构造函数注入,并提供代码示例帮助理解不同场景的应用方式。

m0_50207524的博客 1639

注解类报错Autowired members must be defined in valid Spring bean (@Component|@Service|...)

在使用Spring框架进行开发时,如果要使用@Autowired注解进行依赖注入,被注入的成员必须是一个有效的Spring bean,即该成员必须被标记为@Component、@Service、@Repository等注解之一。通过在类上添加这些注解,Spring框架会自动扫描并将其实例化为bean,然后可以通过@Autowired注解将其注入到其他类中。所以,如果你想在某个类中使用@Autowired注解进行依赖注入,你需要确保该类被标记为一个有效的Spring bean。

weixin_45958839的博客 6687

【SpringBoot】 注解@Autowired

Autowired应该是我们在Spring项目中最常用的注解了。@Target({/*** 申明当前对象是否是必须的可以配置在构造函数、方法上、方法参数上、成员变量上。既然是通过Annotation的方式来注入bean,那么一定要记得在实现类上添加相应的注解;通过JavaConfig的方式来扫描包下的类,并添加到容器中,这种方式类似于beans.xml中我们在使用@Autowired注解的时候,Spring主要是基于类型来主动装配的,如果我们需要指定某一个实现类,可以考虑使用。

九师兄 3381

Autowired must be defined in Spring bean @Component/@Service

概述 今天写代码时碰到一个问题,现记录如下:今天在一个类中注入一个bean对象,结果提示Autowired members must be defined in valid Spring bean (@Component|@Service|…),它的含义就是:自动注入对象必须定义在有效的spring bean内,也就是说只有本身作为bean的类才能注入其他对象。 报错代码如下: public class LogQueryBiz { @Autowired private ErrorDetail

qq_44887733的博客 3万+

从音频录制到智能手表:Sigma-Delta ADC是如何在低功耗场景下‘欺骗’噪声的?

本文深入解析Sigma-Delta ADC在智能穿戴设备中的低功耗高精度实现原理,重点介绍其通过过采样和噪声整形技术‘欺骗’噪声的独特方法。以TWS耳机和医疗级健康监测为例,展示该技术如何在有限功耗预算下实现专业级信号采集,为消费电子设计提供关键解决方案。

weixin_30825581的博客 388

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

橙子的博客 12万+

Spring Boot @Autowired 沒法自動注入的問題(Application类所在包位置很关键!!)

查了很多篇多博客,大多数都不能解决我的问题,快接近放弃时忽然看到一篇博客介绍了Application类所在包位置对Autowired的影响,对照着做后问题霎时解决 参考博客如下: Spring Boot @Autowired 沒法自動注入的問題 - IT閱讀 (itread01.com) 新手请教:spring boot 中@Autowired注解无法自动注入的错误。-优快云论坛 查过多篇博客的提供解决方法都大同小异,试过不管用的解决方案: 1、降低@Autowired的警告级别为warning

m0_37965811的博客 290

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区

本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。

dell8的博客 249

spring boot @Autowired 自动注入为null问题解决

spring boot @Autowired 自动注入为null问题解决 1.今天在

Z__Sheng的博客 8311

在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合

本文介绍了在Mac上搭建本地AI工作流的方法,结合Dify平台和DeepSeek模型。Dify是一个开源的大语言模型应用开发平台,支持可视化AI应用开发。部署步骤包括:1)安装Homebrew和Docker;2)克隆Dify代码库;3)配置环境变量并启动服务。同时,使用Ollama工具本地部署DeepSeek模型,将其集成到Dify中创建聊天助手。通过配置模型接口和新建应用,用户可以在本地环境中实现AI对话功能。这种方案既保证了数据隐私,又提供了灵活的AI应用开发能力。

Linda的自动化测试之旅 1535

Adobe软件非正版弹窗终极解决方案:PS/Ai/PR/AE禁用提示一键清除指南

本文提供了Adobe软件非正版弹窗的终极解决方案,包括PS、Ai、PR、AE等软件的禁用提示一键清除指南。通过专业清理工具和手动修改系统文件的方法,帮助用户彻底解决Adobe弹窗问题,提升使用体验。适用于Windows和Mac系统用户,操作简单高效。

weixin_30872337的博客 5278

spring boot 中@Autowired注解无法自动注入的错误

spring boot 中@Autowired注解无法自动注入的错误在使用springboot main方法启动项目时遇到[@Autowdired]注解无法注入,网上查了很多资料也是一位网上的大神的一句话理通了思路:异常信息:异常信息: Action:Consider defining a bean of type 'com.boot.app.service.bootService' in your

不忘初心的专栏 6万+

转录组测序(RNA-seq)的数据如何分析?

经过富集分析后,我们就可以从富集到的GO term或者Pathway中寻找关键基因,通过一个GO term和Pathway里面的基因往往小于100个,至此我们就又将上千条基因的范围缩小到了100条以内。对GO term或者Pathway里面的基因进行范围的缩小也有两个方法,一种方法是根据基因的注释或者文献来找到GO term或者Pathway里面的关键基因(2-3个),另一种方法需要有相应的表型数据,与GO term或者Pathway里面基因进行相关性分析,找出与表型高度相关的基因。

weixin_55372631的博客 1万+

【Spring】DI(依赖注入)详解:属性注入@Autowired(超详细)、构造方法注入、Setter注入

这篇博客深入讲解了Spring框架中的依赖注入(DI)机制,主要内容包括:DI概念与IoC关系​​:DI是实现控制反转(IoC)的核心手段,通过容器主动管理对象依赖,降低耦合。类比咖啡店点单,开发者只需声明依赖,无需手动创建。三种注入方式​​:属性注入​​:简洁但依赖容器,不支持final字段。构造方法注入​​:推荐方式,支持final字段且强制依赖初始化,适合强不变性需求。Setter注入​​:灵活性高,但可能被多次调用修改。@Autowired问题与解决​​:同一类型多个Bean时,可通过属性名匹。

Code哈哈笑的博客 6438

YOLO26 多任务统一架构:检测 / 分割 / 姿态 / OBB 设计

YOLO26提出了一种多任务统一架构,整合了目标检测、实例分割、姿态估计和旋转框检测(OBB)四大计算机视觉任务。该架构采用共享Backbone和Neck的设计,配合轻量级任务特定Head,解决了传统方法中多模型并行带来的高开发成本、大内存占用和低推理效率问题。核心设计包括:1)共享特征提取层实现参数复用;2)模块化Head结构支持灵活任务组合;3)统一接口实现单模型多任务处理。实验表明,该架构在保持各任务性能的同时显著提升了系统效率,为多任务视觉系统提供了新的实现范式。

一键难忘的博客 700

TGRS 2026 即插即用 | 注意力篇 | SCFM:双向交叉显著性引导注意力,高层语义与低层细节的双向互补!

本文介绍了MPCNet中的语义引导交叉注意力融合模块(SCFM),该模块通过双向交叉显著性引导机制实现跨尺度特征融合。SCFM创新性地结合了高层语义和低层细节的互补信息,通过轻量局部空间注意力预增强和坐标注意力全局融合引导,显著提升了红外小目标检测的精度。实验表明,SCFM在多个数据集上达到SOTA性能,同时保持轻量高效的计算特性,支持端侧设备部署。 SCFM的核心贡献包括: 双向交叉显著性引导机制,实现语义与细节的互补融合 轻量局部空间注意力预增强模块,计算量仅为传统方法的1/10 坐标注意力全局融合引导

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 145

Spring boot使用WebSocket是无法通过@Autowired注入bean问题解决

一次开发WebSocket时发现无法通过@Autowired注入bean,一直为空。解决办法:在@ServerEndpoin中加入以下代码://此处是解决无法注入的关键 private static ApplicationContext applicationContext; //你要注入的service或者dao private CDSocketMessageService cdSocketMe...

qq_28289867的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

spring boot 单元测试@Autowired无法注入问题汇总

单元测试详细步骤: https://blog.youkuaiyun.com/SELECT_BIN/article/details/82880847 遇到无法注入情况,排查: 1.调用Service不能用new实例化: 原因:@autowire跟XML方式注入类似,是Ioc容器负责创建新的实例,实例里可以有其他的依赖关系并也由springIoc容器负责注入,如果只是简单的new一个对象的话,新对象里面的...

SELECT_BIN的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring Boot @Autowired注入为空的情况。

因最近在开发中遇到了使用@Autowired注解 自动装配时,会报空指针,发现对象并没有装配进来,通过查询,总结了几种可能造成这种情况的原因。记录下: 1.最简单的一种情况,查看被装配的类,也就是@Autowired注解下的类是否添加了注解交给SpringBoot托管,@service等注解,或者是直接加上@Component注解。 2.看你的xxxxxApplication是否在根目录,因为...

qq_26245011的博客 3905

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring Boot——@Autowired属性注入问题

例如,使用 Setter Injection 的类可能会存在不完整的状态,如果必需的依赖项没有被设置,可能会导致运行时错误。相比于 Field Injection,Setter Injection 的主要优势是可以避免直接访问类的属性,而是通过 setter 方法来设置依赖项,从而实现更好的封装性。但是,当依赖项过多时,类的属性列表可能会变得很长,降低代码的可读性和可维护性。但是,使用 Setter Injection 的类可能会存在不完整的状态,如果必需的依赖项没有被设置,可能会导致运行时错误。

Wen先森的博客 4780

@Autowired注入失效问题

背景: 在编写EasyExcel示例代码时,执行程序报NullPointerException,经排查发现是自定义的ExcelListener监听器中注入UserService失败导致。 还有一种情况是因为包没被扫到导致。Spring Boot项目的Bean装配默认规则是根据Application类(指项目入口类)所在的包位置从上往下扫描,该情况大家自行了解,本文不做赘述。 解决方案: 方案1...

混沌人的博客 3793
上一篇: Spring Boot中的注解
下一篇: spring boot 直接返回HTML
雨冰
博客等级 码龄15年 18粉丝 60原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值