zoukankan      html  css  js  c++  java
  • Spring工具类 非spring管理环境中获取bean及环境配置

    SpringUtils.java

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * spring工具类
     */
    @Component
    public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware {
        /**
         * Spring应用上下文环境
         */
        private static ConfigurableListableBeanFactory beanFactory;
    
        private static ApplicationContext applicationContext;
    
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
            SpringUtils.beanFactory = beanFactory;
        }
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            SpringUtils.applicationContext = applicationContext;
        }
    
    
        /**
         *  根据类获取bean
         * @param clz
         * @return
         */
        public static <T> T getBean(Class<T> clz)  {
            T result = (T) beanFactory.getBean(clz);
            return result;
        }
    
    
    
        /**
         * 获取当前的环境配置,无配置返回null
         * @return 当前的环境配置
         */
        public static String[] getActiveProfiles() {
            return applicationContext.getEnvironment().getActiveProfiles();
        }
    
        /**
         * 获取当前的环境配置,当有多个环境配置时,只获取第一个
         * @return 当前的环境配置
         */
        public static String getActiveProfile() {
            final String[] activeProfiles = getActiveProfiles();
            if (activeProfiles != null || activeProfiles.length > 0) {
                return activeProfiles[0];
            }
            return null;
        }
    }
    -----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------ (蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
  • 相关阅读:
    android中ping命令的实现
    回溯法——求解0-1背包问题
    scanner使用中遇见的问题
    Eddy&#39;s digital Roots
    项目经理注意事项(3)---宏观把控
    Spring IOC容器
    C++对象模型——Template中的名称决议方式 (第七章)
    比赛对手名单
    猴子吃桃问题
    设计模式-单例模式(02)
  • 原文地址:https://www.cnblogs.com/pxblog/p/15065785.html
Copyright © 2011-2022 走看看