spring管理的bean在静态方法使用技巧——@PostConstruct

这篇具有很好参考价值的文章主要介绍了spring管理的bean在静态方法使用技巧——@PostConstruct。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

        如果我们使用正常的 @Component 注解将一个类交由spring管理,然后在使用的时候用@Resource注入对象,在没有碰到静态方法的时候,是不会出现问题,但是如果出现了静态方法,这样的使用方法就会出现空指针的异常,也就是你@Resource注入的对象是空


原因:

        一个方法或者变量被 static 修饰,则说明改方法或者变量就成为了类方法或者变量,随着类的加载而加载,会被当前类下的所有对象所共有。而@Resource的作用,就是去springbean工厂中去匹配一个对象,并且完成对象的注入,这属于对象级别的,在此时,类的所有静态属性已经被加载完成

        问题产生的原因就是类加载的先后顺序导致的,静态属性会在程序第一次启动的时候,就完成加载,并且之后不会再有变动,但是使用@Resource注解,则是每次都去spring容器去获取bean,在静态变量初始化的后面,所有就会导致@Resource出现空的情况


解决方案:

        这里我们要学习一个注解 @PostConstruct

        在Spring Boot项目中,@PostConstruct注解用于标记一个方法,该方法在类实例化后被调用,在依赖注入完成之后执行。它的作用是在对象创建后执行一些初始化操作

        具体来说,@PostConstruct注解通常与依赖注入结合使用,用于在注入依赖之后执行一些必要的初始化任务。当Spring容器实例化一个带有@PostConstruct注解的Bean时,它会在所有依赖注入完成之后调用被注解的方法。

因此,如果我们想要在静态方法中使用一个 spring管理的bean,如下:

@Component
public class FileUpload {
    
    @Resource
    private  CommonConfig commonConfig;

    private static FileUpload fileUpload;

    @PostConstruct
    public void init(){
        fileUploadUtil = this;
        fileUploadUtil.commonConfig= commonConfig;
    }

    public static void testSpring(){
        fileUploadUtil.commonConfig.xxxx ;     // 调用commonConfig
    }
}

    这段代码的作用是将CommonConfig对象注入到FileUploadUtil类中,并在初始化过程中将其赋值给静态变量fileUploadUtil,以便在其他地方可以通过静态变量访问FileUploadUtil对象和commonConfig属性。文章来源地址https://www.toymoban.com/news/detail-688668.html

到了这里,关于spring管理的bean在静态方法使用技巧——@PostConstruct的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C#析构函数解析:资源管理的精要和使用技巧

      在C#中,析构函数(Destructor)是一个特殊的方法,用于清理对象占用的资源。它是由垃圾回收器在对象被销毁时自动调用的。析构函数的原理是在对象即将被回收时执行一些清理操作,例如释放非托管资源或执行一些对象销毁前的必要操作。 调用时机:  当对象被垃圾回收

    2024年01月24日
    浏览(49)
  • SpringBoot开发小技巧使用(DEBUG、启动图标修改、Lombok、devtools、Spring Initializr)

    在resources/application.properties中添加如下,开启DEBUG功能: 然后启动springboot应用,就可以看到DEBUG的日志。Positive表示生效,Negative表示不生效。如下所示: 下载百度的logo到resouces目录下,然后在resources/application.properties添加如下内容: 最后启动springboot应用。打印的日志如下,

    2024年02月15日
    浏览(43)
  • 【pandas使用技巧】pandas中空值的处理方法

    在pandas中,可以使用fillna()方法对DataFrame中的空值进行处理。fillna()方法可以接受一个参数,用于指定如何填充空值。以下是一些常用的填充方式: 使用固定值填充:fillna(value) 使用前一个非空值填充:fillna(method=‘ffill’) 使用后一个非空值填充:fillna(method=‘bfill’) 使用平均

    2024年02月15日
    浏览(47)
  • 【正点原子STM32】KEIL MDK5使用技巧(文本美化、代码编辑、查找&替换技巧、工程编译问题定位、窗口视图管理)

    一、文本美化 1.1、编辑器设置 1.2、字体和颜色设置 1.3、用户设置 1.4、代码提示语法检测 1.5、global.prop文件妙用 二、代码编辑技巧 2.1、Tab键的妙用 2.2、快速定位函数或变量被定义的地方 2.3、快速注释快速取消注释 三、查找替换技巧 3.1、快速打开头文件 3.2、查找功

    2024年01月23日
    浏览(67)
  • 从入门到精通:掌握Spring IOC/DI配置管理第三方bean的技巧

    以后我们会用到很多第三方的bean,我们以数据源是 Druid(德鲁伊) 和 C3P0 来配置举个例子。 1.1.1 环境准备 先来准备下案例环境: 1.1.2 思路分析 需求:使用Spring的IOC容器来管理Druid连接池对象 1.使用第三方的技术,需要在pom.xml添加依赖 2.在配置文件中将【第三方的类】制作成一个

    2024年02月02日
    浏览(47)
  • PyInstaller详细攻略:安装、使用方法及经验技巧

    PyInstaller详细攻略:安装、使用方法及经验技巧 PyInstaller是一款优秀的Python打包工具,可以将Python程序打包成单个可执行文件,方便程序在其他环境中运行。本篇文章将介绍PyInstaller的安装、使用方法及如何去除cmd黑框、隐藏导入的模块等经验技巧。 一、安装PyInstaller PyInsta

    2024年02月06日
    浏览(69)
  • 深入解析 Axios Blob 的使用方法及技巧

    在 Web 开发中,处理文件传输是一个常见的需求。Blob(二进制对象)是一种表示二进制数据的方式,常用于处理文件和多媒体数据。本文将介绍如何使用  Axios  和 Blob 来处理文件传输。 在开始之前,让我们先了解一下 Axios 和 Blob 的基本概念。 Axios :Axios 是一个基于 Promis

    2024年02月12日
    浏览(56)
  • 飞鱼星路由器的使用方法与技巧简介

      一、Reset键 1、就像电脑系统的一键还原一样,路由器上的Reset键也能帮助我们解决很多问题当路由器的基本设置出现混乱,甚至进入配置界面的IP地址都找不到时,这时我们可以用Reset持续按住该按钮几秒钟,就能将该设备的所有参数恢复到出厂配置,以便我们重新配置。

    2024年02月05日
    浏览(74)
  • AI智能化办公:ChatGPT使用方法与技巧

    随着人工智能技术的不断发展,AI助手在办公场景中扮演着越来越重要的角色。其中,ChatGPT作为一款强大的自然语言处理模型,为用户提供了高效的办公辅助功能。本文将介绍ChatGPT的使用方法与一些技巧,帮助读者更好地利用这一工具提高工作效率。 ChatGPT是由OpenAI公司开发

    2024年02月04日
    浏览(67)
  • 微软笔记软件onenote使用方法和技巧(不定期新增)

    不知道有多少人喜欢用电子笔记,反正我除了公式有时候会在纸上写,其他的笔记都用电子版。毕竟用纸笔记录的笔记,没法随时随地查看与修改,也没法任意新增,有时候要跟别人讨论,带一个pad肯定比带几个笔记本要舒服。 云同步、多设备、搜索、OCR 这些功能,让电子

    2024年02月07日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包