@Autowired 自动注入的service 对象为null

文章描述了一位开发者遇到Controller层Service对象自动注入为null的问题。开发者检查了@自治注解、组件扫描配置、包路径、类路径和版本兼容性,但问题依然存在。最终发现是低级错误导致,没有提供具体错误详情。清理IDE缓存和重启IDE并未解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

在controller层新加一个接口,调用自动注入的service对象操作数据库,发现service对象为null;

排查

奇了怪了,同在一个controller里,其他接口怎么都正常。

当然网上一顿找,发现有如下几种可能

当使用 @Autowired 注解进行自动注入时,出现 null 值的情况通常有以下几种可能的原因:

  1. 未正确配置@Component或@Service:确保被注入的service类上标注了正确的注解,如@Service@Component等。这些注解告诉Spring容器对该类进行管理,以便进行自动注入。

  2. 未开启组件扫描:Spring需要扫描带有@Service@Component等注解的类,并将其注册为bean。确保在配置文件中启用了组件扫描功能,通常是通过<context:component-scan>或者@ComponentScan注解来实现。

  3. 未配置正确的包路径:如果使用了组件扫描功能,请确保扫描的包路径正确,可以检查配置文件或者注解中的包路径是否与service类所在的包路径匹配。

  4. 类路径错误:检查类路径是否正确配置。如果service类在不同的模块或者JAR文件中,确保这些模块或者JAR文件已经正确地添加到构建路径中。

  5. 依赖注入的类并未被Spring容器管理:如果使用 @Autowired 注解对非Spring容器管理的类进行注入,将会导致注入的对象为 null。确保被注入的service类被正确地注册到Spring容器中。

  6. 版本冲突或配置错误:如果使用了不兼容的Spring版本或者配置错误,可能会导致自动注入失败。确保所使用的Spring版本与Java开发环境兼容,并检查配置文件中的其他相关配置项。

发现以上都不适用,然后就清理idea缓存,重启idea等操作,发现还是不行。

解决

最后发现原来是个低级错误,看图吧

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值