SpringBoot @Autowired注入为空的情况解读

 更新时间:2023年03月06日 14:22:09   作者:一个新手^_^  
这篇文章主要介绍了SpringBoot @Autowired注入为空的情况解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Autowired注入为空的情况解读

因最近在开发中遇到了使用@Autowired注解 自动装配时,会报空指针,发现对象并没有装配进来,通过查询,总结了几种可能造成这种情况的原因。

记录下

1.最简单的一种情况,查看被装配的类,也就是@Autowired注解下的类是否添加了注解交给SpringBoot托管,@service等注解,或者是直接加上@Component注解。

2.看你的xxxxxApplication是否在根目录,因为springboot默认扫描的就是启动类下的目录(这个我记着只限于Springboot2.0.5之前的版本,因为新版可以通过@ComponenScan注解去指定扫描范围)。

3.@Service、@Componet、@Configuration、@Repository等Spring注解未被扫描到,例如:springboot的主类扫描规则,就是说需要查看你的Springboot启动类,xxxxxApplication,查看启动类上注解是否加了@ComponenScan注解,是否指定了扫描范围。

使用springboot启动类配置扫描的两种注解配置方式:

  • 1、@Controller @EnableAutoConfiguration @ComponentScan 。
  • 2、@SpringBootApplication

4.使用救急方法,这是如果没找到原因,我们先使用其他方法让程序先能正常运行和调试,后续再查找问题。

@Autowired
 private SchedulerFactoryBean schedulerFactoryBean;
    
 private static QuartzManager quartzManager;
    
 /**
  * 通过@PostConstruct实现初始化bean之前进行的操作
  * @desc 初始化操作,得到QuartzManager实例
  * @Date 2019年1月7日
  */
 @PostConstruct 
 public void init() {  
      quartzManager = this;  
      quartzManager.schedulerFactoryBean = this.schedulerFactoryBean;        
}

使用@PostConstruct 初始化。

5.这个原因很重要,也是经常会被忽略的一个因素。调用者是new出来的。如果类A中存在成员属性B, B是通过@Autowired自动注入,而类A的实例是通过new的方式产生的,那么自动注入会失效的,此时通过Spring的上下文获取所有的Bean的方法来获取B。此时,看看你在报空指针的那个类,看它是否是被new出来的,如果是,不妨使用SpringUtil.getBean()方法替换下, 然后再试下!

@Autowired注入bean找不到异常

异常描述

***************************
APPLICATION FAILED TO START
***************************

Description:

Field clientAuthService in com.yinhai.mzgh.eurekaclient.feign.interceptor.Oauth2RequestInterceptor 
required a bean of type 'com.yinhai.mzgh.eurekaclient.feign.service.ClientAuthService' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.yinhai.mzgh.eurekaclient.feign.service.ClientAuthService' in your configuration.

问题原因

这个问题是环境问题,在Profiles 中之前是dev 环境

在这里插入图片描述

我刚来,猜测是 dev环境没有搭建好的原因

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一个简单的Spring容器初始化流程详解

    一个简单的Spring容器初始化流程详解

    这篇文章主要给大家介绍了一个简单的Spring容器初始化流程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 浅析Java.IO输入输出流 过滤流 buffer流和data流

    浅析Java.IO输入输出流 过滤流 buffer流和data流

    这篇文章主要介绍了Java.IO输入输出流 过滤流 buffer流和data流的相关资料,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • java中Servlet监听器的工作原理及示例详解

    java中Servlet监听器的工作原理及示例详解

    这篇文章主要介绍了java中Servlet监听器的工作原理及示例详解。Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。感兴趣的可以来了解一下
    2020-07-07
  • Java多线程的具体介绍与使用笔记小结

    Java多线程的具体介绍与使用笔记小结

    Java多线程详细介绍线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关)。 接下来通过本文给大家介绍Java多线程的具体介绍与使用笔记小结,感兴趣的朋友一起看看吧
    2021-05-05
  • Spring高级之注解@PropertySource的原理

    Spring高级之注解@PropertySource的原理

    这篇文章主要介绍了Spring高级之注解@PropertySource的原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • JVM执行引擎和垃圾回收要点总结

    JVM执行引擎和垃圾回收要点总结

    不论是在问题现场还是跳槽面试,我们面对JVM性能问题,依旧会束手无辞,它需要你对Java虚拟机的实现和优化,有极为深刻的理解。所以我在这里整理了一下 JVM的知识点。今天说说虚拟机执行引擎和垃圾回收,都是十足的干货,请各位看官耐心批阅!
    2021-06-06
  • mybatis plus saveBatch方法方法执行慢导致接口发送慢解决分析

    mybatis plus saveBatch方法方法执行慢导致接口发送慢解决分析

    这篇文章主要为大家介绍了mybatis plus saveBatch方法导致接口发送慢解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Java8新特性Stream短路终端操作实例解析

    Java8新特性Stream短路终端操作实例解析

    这篇文章主要介绍了Java8新特性Stream短路终端操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Nacos配置中心设计原理分析

    Nacos配置中心设计原理分析

    今天分享一下Nacos配置变更的相关知识点,现在使用Java生态如果使用微服务,如果部署在K8s上,那么可能会使用ConfigMap来存储配置文件,如果没有使用K8s,那么基本上都使用Nacos来做配置中心,所以有必要了解一下Nacos的配置的知识点,本文只是对其中的部分实现原理进行分析
    2023-10-10
  • JAVA技术实现上传下载文件到FTP服务器(完整)

    JAVA技术实现上传下载文件到FTP服务器(完整)

    这篇文章主要介绍了JAVA技术实现上传下载文件到FTP服务器(完整),本文使用 Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作,需要的朋友可以参考下
    2015-07-07

最新评论