自定义SpringContextHolder获取实例对象

本文介绍了一种自定义Spring Bean获取器的实现方法,通过实现ApplicationContextAware接口,提供了静态方法来获取ApplicationContext上下文和注册的Bean实例。该方法允许在Spring应用中方便地获取任意Bean,无需直接依赖于ApplicationContext。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义SpringContextHolder获取实例对象

 

import org.springframework.stereotype.*;

import org.springframework.context.*;

import java.util.*;

 

@Component

public class SpringContextHolder implements ApplicationContextAware

{

private static ApplicationContext applicationContext;

public void setApplicationContext(final ApplicationContext applicationContext) {

SpringContextHolder.applicationContext = applicationContext;

}

public static ApplicationContext getApplicationContext() {

checkApplicationContext();

return SpringContextHolder.applicationContext;

}

public static <T> T getBean(final String name) {

checkApplicationContext();

return (T)SpringContextHolder.applicationContext.getBean(name);

}

public static <T> T getBean(Class<T> clazz) {

checkApplicationContext();

Map beanMaps = SpringContextHolder.applicationContext.getBeansOfType((Class)clazz);

if (beanMaps != null && !beanMaps.isEmpty()) {

return beanMaps.values().iterator().next();

}

return null;

}

public static boolean containsBean(String name) {

return SpringContextHolder.applicationContext.containsBean(name);

}

private static void checkApplicationContext() {

if (SpringContextHolder.applicationContext == null) {

throw new IllegalStateException("未获取到实例对象");

}

}

}

 

获取bean实例

SpringContextHolder.getBean("PCServiceTemplateImpl");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值