SpringBoot项目中如何在静态工具类中使用被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()方法

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值