欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

# Spring上下文工具类 SpringContextUtils 工具类

程序员文章站 2022-06-21 15:00:59
Spring上下文工具类 SpringContextUtils 工具类问题分析从Spring上下文中获得已经装配的Bean,方便拿到配置文件中的配置的资源信息。当一个类实现ApplicationContextAware之后,这个类就可以方便获得ApplicationContext中的所有的Bean。ApplicationContextAware的实现类中对Application 进行了初始化,所以实现这个类可以拿到当前上下文中所有的Bean。工具类实现@Componentpublic class...

Spring上下文工具类 SpringContextUtils 工具类

问题分析

从Spring上下文中获得已经装配的Bean,方便拿到配置文件中的配置的资源信息。当一个类实现ApplicationContextAware之后,这个类就可以方便获得ApplicationContext中的所有的Bean。ApplicationContextAware的实现类中对Application 进行了初始化,所以实现这个类可以拿到当前上下文中所有的Bean。

工具类实现
@Component
public class SpringContextUtils  implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    private static final Logger logger = LoggerFactory.getLogger(SpringContextUtils.class);

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(Objects.isNull(SpringContextUtils.applicationContext)){
            logger.info("=====>ApplicationUtils初始化...");
            SpringContextUtils.applicationContext = applicationContext;
        }
        if(Objects.nonNull(SpringContextUtils.applicationContext)){
            logger.info("=====>ApplicationUtils初始化成功!");
        }
    }

    /**
     * 获得当前的ApplicationContext
     *
     * @author LiDong
     * @date 2020/11/20
     * @param '[]'
     * @return org.springframework.context.ApplicationContext
     */
    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }

    /**
     * 根据名称拿到Bean
     *
     * @author LiDong
     * @date 2020/11/20
     * @param '[name]'
     * @return java.lang.Object
     */
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    /**
     * 从ApplicationContext中获得Bean并且转型
     *
     * @author LiDong
     * @date 2020/11/20
     * @param '[tClass]'
     * @return T
     */
    public static <T> T getBean(Class<T> tClass){
        return getApplicationContext().getBean(tClass);
    }
}
测试例子
@RequestMapping("/test4")
public void test4(){
    try {
        RedissonClient redissonClient = (RedissonClient) SpringContextUtils.getBean("redissonClient");
        redissonClient.getSet("two").add("two");
    }catch (Exception e){
        logger.error(e.getMessage(),e);
    }
}

本文地址:https://blog.csdn.net/qq_37248504/article/details/109861854

相关标签: 工具包