当前位置:   article > 正文

SpringBoot项目中如何在静态工具类中使用被Spring容器管理的对象_静态方法中使用spring容器中的对象

静态方法中使用spring容器中的对象

在开发的过程中,难免会碰到需要在工具类中使用由spring管理的对象的情况,但是我们都知道,工具类中的静态方法中无法引用spirng容器中的对象(被spring管理的对象不是静态的,静态方法中无法调用),那么该如何才能在静态方法中调用到该对象呢?

首先需要介绍spring的一个接口类:

ApplicationContextAware

Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContextAware()方法,调用该方法时,会将容器本身作为参数传给该方法——该方法中的实现部分将Spring传入的参数(容器本身)赋给该类对象的applicationContext实例变量,因此接下来可以通过该applicationContext实例变量来访问容器本身。

由此可见,通过实现ApplicationContextAware接口,我们可以获取到spring的ApplicationContext上下文对象,而该对象管理容器中的Bean,这样我们就可以通过该对象去获取到容器中自己想要的Bean了,如下:

我们可以在工具类中的静态方法调用ApplicationContextUtil.get()方法,来获取想要的spring容器中对象。

调用接口返回:

以上通过ApplicationContextUtil.get()在静态方法中获取到了spring容器中的TestService对象,并调用了该对象getName()方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/798459
推荐阅读
相关标签
  

闽ICP备14008679号