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

Springboot - 获得应用程序上下文ApplicationContext并构建工具类

程序员文章站 2022-05-25 22:54:34
...

Springboot - 获得应用程序上下文ApplicationContext并构建工具类


1.实现ApplicationContextAware接口

import com.simply.zuozuo.util.ApplicationContextUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;

/**
 * @author Created by 谭健 on 2018/4/13 0013. 星期五. 11:29.
 * © All Rights Reserved.
 */

@Slf4j
@Component
@Data
public class ApplicationContextAwareImpl implements ApplicationContextAware {


    /**
     * 实现该接口用来初始化应用程序上下文
     * 该接口会在执行完毕@PostConstruct的方法后被执行
     * <p>
     * 接着,会进行Mapper地址扫描并加载,就是RequestMapping中指定的那个路径
     *
     * @param applicationContext 应用程序上下文
     * @throws BeansException beans异常
     */
    @Override
    public void setApplicationContext(@Nullable ApplicationContext applicationContext) throws BeansException {
        log.info("应用程序上下文 : [{}]", "开始初始化");
        ApplicationContextUtils.applicationContext = applicationContext;


        log.info("应用程序上下文 getId : [{}]", applicationContext.getId());
        log.info("应用程序上下文 getApplicationName : [{}]", applicationContext.getApplicationName());
        //  log.info("应用程序上下文 getAutowireCapableBeanFactory : [{}]",applicationContext.getAutowireCapableBeanFactory());
        //  log.info("应用程序上下文 getDisplayName : [{}]",applicationContext.getDisplayName());
        //  log.info("应用程序上下文 getParent : [{}]",applicationContext.getParent());
        log.info("应用程序上下文 getStartupDate : [{}]", applicationContext.getStartupDate());
        //  log.info("应用程序上下文 getEnvironment : [{}]",applicationContext.getEnvironment());

        log.info("应用程序上下文 : [{}]", "初始化完成");
    }
}

2.构建工具类

import org.springframework.context.ApplicationContext;

/**
 * @author Created by 谭健 on 2018/4/13 0013. 星期五. 11:47.
 * © All Rights Reserved.
 */
public class ApplicationContextUtils {


    public static ApplicationContext applicationContext;

    /**
     * 通过名称获取bean
     */
    public static Object get(String name) {
        return applicationContext.getBean(name);
    }


    /**
     * 通过类型获取bean
     */
    public static Object get(Class<?> clazz) {
        return applicationContext.getBean(clazz);
    }

    /**
     * 判断某个bean是不是存在
     */
    public static boolean has(String name) {
        return applicationContext.containsBean(name);
    }


}