前言

有时候我们的需求需要根据环境的不同来执行不同的业务逻辑,这时候我们就需要获取项目当前运行的是哪个环境,下面介绍个方法


通过ApplicationContext获取profile

方法如下:

    /**
     * 获取spring.profiles.active
     * @return
     */
    public static String getProfile(){
        return getApplicationContext().getEnvironment().getActiveProfiles()[0];
    }

getApplicationContext方法为获取applicationContext,然后从applicationContext获取到当前的运行环境

整个工具类如下,大家可以拿来即用:

@Component
public class SpringContextUtil implements ApplicationContextAware {

    /**
     * spring的应用上下文
     */
    private static ApplicationContext applicationContext;

    /**
     * 初始化时将应用上下文设置进applicationContext
     * @param applicationContext
     * @throws BeansException
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext=applicationContext;
    }

    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }

    /**
     * 根据bean名称获取某个bean对象
     *
     * @param name bean名称
     * @return Object
     * @throws BeansException
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }

    /**
     * 根据bean的class获取某个bean对象
     * @param beanClass
     * @param <T>
     * @return
     * @throws BeansException
     */
    public static <T> T getBean(Class<T> beanClass) throws BeansException {
        return applicationContext.getBean(beanClass);
    }

    /**
     * 获取spring.profiles.active
     * @return
     */
    public static String getProfile(){
        return getApplicationContext().getEnvironment().getActiveProfiles()[0];
    }

}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐