springboot中@Autowired 注入失效的四种原因及解决方法

这篇具有很好参考价值的文章主要介绍了springboot中@Autowired 注入失效的四种原因及解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 被注入的对象没有加载到spring容器中

通常是因为被注入的对象没有被spring扫描到,此时需要添加对应的包扫描路径。

添加包扫描
在启动类中定义分别扫描两个包 ,即在@SpringBootApplication注解的类中添加:
@ComponentScan({“com.demo.test1”,“com.demo.common”})

2. 需要自动注入的对象不是spring加载,而是new的方式创建

由于对象不是spring创建的,当然spring也就无法根据注解自动注入对应的实例对象。

此时可以采用代码的方式,从spring容器中获取对象实例

通过Spring上下文工具类获取bean

    定义一个SpringUtil类

/**
 * Spring上下文工具类,用以让普通类获取Spring容器中的Bean
 */
@Component
public class SpringUtil implements ApplicationContextAware {
 
    private static ApplicationContext applicationContext = null;
    
    //获取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
 
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
    }
    
    //通过name获取 Bean     
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
}

然后在类A中通过如下调用获取Spring容器中的实例

3. 需要自动注入的对象不是spring加载,而是采用反射的方式创建

这种情况和第二种情况类似,通常在一些框架调用的时候,采用的对象创建方式,为了避免对spring的依赖,采用类的反射方式进行创建。

此时可以采用代码的方式,从spring容器中获取对象实例。
方法和第二种情况相同。

4. 使用springboot的devtools热部署加载的类

热部署加载的类使用的加载器和spring容器的加载器不同,所以热部署加载器加载的类,访问不到spring容器中的对象。文章来源地址https://www.toymoban.com/news/detail-604756.html

这种情况通常发生在使用热部署过程中,禁用热部署后该问题就不存在了。

到了这里,关于springboot中@Autowired 注入失效的四种原因及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot导出Excel的四种方式

           近期接到了一个小需求,要将系统中的数据导出为Excel,且能将Excel数据导入到系统。对于大多数研发人员来说,这算是一个最基本的操作了。但是……我居然有点方!         好多年没有实操这种基础的功能了。我对于excel导入导出的印象还停留在才入行时的工作经

    2024年02月03日
    浏览(41)
  • SpringBoot使用@Autowired将实现类注入到List或者Map集合中

    最近看到 RuoYi-Vue-Plus 翻译功能 Translation 的翻译模块配置类 TranslationConfig ,其中有一个注入 TranslationInterface 翻译接口实现类的写法让我感到很新颖,但这种写法在Spring 3.0版本以后就已经支持注入 List 和 Map ,平时都没有注意到这一块,故此记录一下这种写法。 之前一般定义

    2024年02月14日
    浏览(40)
  • SpringBoot项目启动后执行指定方法的四种实现

    今日的好天气 距离上一次更新帖子已经过了很久很久,久到我也不知道我在搞什么飞机。 国庆节第一天终于搬到了新家,最近量子纠缠比较火,冬天也在路上,匆匆又一年。 @PostConstruct是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在

    2023年04月15日
    浏览(41)
  • SpringBoot复习:(18)@Value和@Autowired注解配置的属性是怎么注入到bean中的?

    @Value java doc文档指出,它是由 AutowiredAnnotationBeanPostProcessor 这个 BeanPostProcessor 处理的。 AutowiredAnnotationBeanPostProcessor的构造方法如下: 可见AutowiredAnnotationBeanPostProcessor用来处理@Autowired和@Value这两个注解。 具体的处理流程是通过在容器对bean进行实例化的时候应用上述BeanPostPr

    2024年02月13日
    浏览(36)
  • 关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。

    本文是基于江南一点雨的 Spring Boot+Vue 系列视频教程第 三 章的第三节,详情参考Spring Boot+Vue系列视频教程 在观看学习这一节时,发现当进行手动渲染 Thymeleaf 模板时,通过 @Autowired 注解来对 TemplateEngine 进行自动装配时,发现 idea 对其显示 No beans of \\\'TemplateEngine \\\' type of found。

    2024年02月02日
    浏览(44)
  • 详解JS的四种异步解决方案!

    目录 同步异步的概念 js中异步的应用场景 实现异步的四种方法 1、 回调函数 2、Promise 3、Generator 4、 async/await         「异步编程」 是前端工程师日常开发中经常会用到的技术,也是校招面试过程中常考的一个知识点。         通过掌握 「异步编程」 的四种方式,可

    2024年01月18日
    浏览(40)
  • 解决Hash(哈希表)冲突的四种方案

    参考鸣谢 解决哈希冲突必须知道的几种方法 小僵鱼 你还应该知道的哈希冲突解决策略 vivo互联网技术 解决哈希冲突的三种方法 kaleidoscopic 每日一题(哈希表及哈希冲突解决办法) 和笙 哈希是一种通过对数据进行压缩, 从而提高效率的一种解决方法 ,但由于哈希函数有限,数据

    2024年02月14日
    浏览(42)
  • 解决iphone卡在恢复模式的四种方法

    比如系统升级的时候卡在恢复模式、降级系统、或者是在手机越狱过程中以及一些误操作可能手机就莫名其妙的进入到了iPhone恢复模式。 恢复模式在平时的应用主要是在iPhone连接电脑的时候,电脑无法识别到手机,我们将iPhone调至恢复模式就能够被电脑识别到了,之前我也分

    2024年02月10日
    浏览(138)
  • 已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法

    今天在使用 IDEA 使用 MyBatis 的时候遇到了这种情况: 可以看到 userMapper 下有个红色的波浪警告,虽然代码没有任何问题,能正常运行,但是这个红色警告在这里杵着确实让人很窝心。 于是我在网上找了找,最终明白了原因所在: 因为 IDEA 可以智能的理解上下文,然而 UserM

    2024年02月20日
    浏览(47)
  • 磊科路由器常见故障的四种解决方法

      一、线路不通 1、在确保路由器电源正常的前提下首先查看宽带接入端,路由器上的指示灯可以说明宽带线路接入端是否正常,观察其灯闪亮状态,连续闪烁为正常,不亮或长亮不闪烁为故障,我们可以换一根宽带胶线代替原来的线路进行连接。 2、如果是无线路由器,查看

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包