首页>代码>SpringBoot开发非常美观的java博客系统(包含后台管理功能)>/mblog/mblog-base/src/main/java/mblog/base/context/SpringContextHolder.java
                
                /**
 * Copyright © 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package mblog.base.context;
import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
/**
 * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext.
 *
 * @author Zaric
 * @date 2013-5-29 下午1:25:40
 */
@Service
@Lazy(false)
public class SpringContextHolder implements ApplicationContextAware, DisposableBean {
    private static ApplicationContext applicationContext = null;
    private static Logger logger = LoggerFactory.getLogger(SpringContextHolder.class);
    /**
     * 取得存储在静态变量中的ApplicationContext.
     */
    public static ApplicationContext getApplicationContext() {
        assertContextInjected();
        return applicationContext;
    }
    /**
     * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
     */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) {
        assertContextInjected();
        return (T) applicationContext.getBean(name);
    }
    /**
     * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
     */
    public static <T> T getBean(Class<T> requiredType) {
        assertContextInjected();
        return applicationContext.getBean(requiredType);
    }
    /**
     * 清除SpringContextHolder中的ApplicationContext为Null.
     */
    public static void clearHolder() {
        if (logger.isDebugEnabled()){
            logger.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext);
        }
        applicationContext = null;
    }
    /**
     * 实现ApplicationContextAware接口, 注入Context到静态变量中.
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
//		logger.debug("注入ApplicationContext到SpringContextHolder:{}", applicationContext);
        if (SpringContextHolder.applicationContext != null) {
            logger.info("SpringContextHolder中的ApplicationContext被覆盖, 原有ApplicationContext为:" + SpringContextHolder.applicationContext);
        }
        SpringContextHolder.applicationContext = applicationContext; // NOSONAR
    }
    /**
     * 实现DisposableBean接口, 在Context关闭时清理静态变量.
     */
    @Override
    public void destroy() throws Exception {
        SpringContextHolder.clearHolder();
    }
    /**
     * 检查ApplicationContext不为空.
     */
    private static void assertContextInjected() {
        Validate.validState(applicationContext != null, "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.");
    }
}
 最近下载更多
最近下载更多
                
                vincemokea     LV9
                8月26日
            
            
        
                lanhaigcb     LV3
                6月5日
            
            
        
                032932     LV1
                2月22日
            
            
        
                srmess     LV4
                2024年12月30日
            
            
        
                Duangi     LV1
                2024年12月23日
            
            
        
                zolscy     LV24
                2024年12月18日
            
            
        
                xianyu091012     LV5
                2024年11月19日
            
            
        
                12347658     LV1
                2024年11月13日
            
            
        
                xunxia     LV7
                2024年10月10日
            
            
        
                微信网友_7005760998215680     LV6
                2024年10月2日
            
            
         最近浏览更多
最近浏览更多
                
                微信网友_7749187418198016     LV2
                昨天
            
            
        
                khmumuno    
                10月24日
            
            
                    暂无贡献等级
            
        
                一个神秘人     LV1
                10月22日
            
            
        
                不爱吃香菜    
                10月17日
            
            
                    暂无贡献等级
            
        
                AniyaKKbi    
                8月28日
            
            
                    暂无贡献等级
            
        
                6418368     LV10
                8月5日
            
            
        
                1140717565     LV2
                7月18日
            
            
        
                limufu     LV1
                6月17日
            
            
        
                2578193624     LV2
                6月8日
            
            
        
                lanhaigcb     LV3
                6月5日
            
            
        
 
                 
     
                