Spring获取上下文对象ApplicationContext的2种办法

【饿了么、美团】外卖红包领取地址 >> 能省一点是一点

想要在Spring中手动获取Bean对象,我们就要先获取ApplicationContext对象即Spring的上下文。通过ApplicationContext对象我们就可以手动的从Spring中获取被Spring管理的Bean。

获取ApplicationContext有2种办法:

1、直接使用注解注入上下文对象即可

@Autowired
private ApplicationContext applicationContext;

但是很多情况下,我们需要手动获取Bean对象的原因就是无法使用注解注入,所以我们需要使用方法2。

2、通过工具类将ApplicationContext对象存入静态变量的方式进行获取

/**
 * SpringUtil
 */
@Component
public class SpringUtil implements ApplicationContextAware{

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtil.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        if (applicationContext == null) {
            throw new ApplicationContextException("SpringUtil.applicationContext is null");
        }
        return applicationContext;
    }

}

通过如上的工具类,我们就可以在Spring启动之后,在代码任意位置通过SpringUtil.getApplicationContext()方法获取ApplicationContext对象,进而获取需要的各种Bean。

工具类解析:
通过实现ApplicationContextAware接口将ApplicationContext对象存到工具类的静态属性中,记得在工具类上需要添加@Component使得工具类能被Spring管理,否则setApplicationContext方法并不会被调用,即applicationContext为null。

使用样例:

TestService bean = SpringUtil.getApplicationContext().getBean(TestService.class);

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

半山农 玉竹片 玉竹干片 新鲜玉竹切片 120克/瓶 养生茶
¥26.50
晨光(M&G)文具16K/40张缝线本 记事本笔记本子 纯系列软抄本 学生日记本 4本装APYFK09
¥16.20
俊瀚 棉被收纳袋牛津布搬家袋子加厚防水行李衣物收纳整理袋打包袋 星空航道[加厚款] 【105L】超大70*30*50cm
¥20.60
鲜窝窝 新鲜生鹌鹑蛋 鹑鸟蛋 生鲜蛋 附卤蛋料包 50枚 有卤料包
¥19.70
GIANXI 经典热水瓶家用保温壶大容量保温瓶玻璃内胆暖壶学生宿舍暖瓶开水瓶 金色2000ml
¥49.00
普斯盾(pusidun)口罩一次性医用外科口罩 三层成人50只*2盒
¥17.44
珍视力医用冷敷贴儿童眼贴12袋/盒 青少年缓解冷敷眼贴眼疲劳干涩眼部护理儿童护眼贴
¥30.00
露霏 生日礼物卡通暖宝宝贴持久发热暖身贴学生冬季防寒暖宝宝贴便携女士发热暖贴20片装 新款太空人系列-20片装
¥32.00