| package com.genersoft.iot.vmp.utils; | 
|   | 
| import org.springframework.beans.BeansException; | 
| import org.springframework.context.ApplicationContext; | 
| import org.springframework.context.ApplicationContextAware; | 
| import org.springframework.stereotype.Component; | 
|   | 
| /**     | 
|  * @description:spring bean获取工厂,获取spring中的已初始化的bean | 
|  * @author: swwheihei | 
|  * @date:   2019年6月25日 下午4:51:52    | 
|  *  | 
|  */ | 
| @Component | 
| public class SpringBeanFactory implements ApplicationContextAware { | 
|   | 
|     // Spring应用上下文环境 | 
|     private static ApplicationContext applicationContext; | 
|      | 
|     /** | 
|      * 实现ApplicationContextAware接口的回调方法,设置上下文环境 | 
|      */ | 
|     @Override | 
|     public void setApplicationContext(ApplicationContext applicationContext) | 
|             throws BeansException { | 
|         SpringBeanFactory.applicationContext = applicationContext; | 
|     } | 
|   | 
|     public static ApplicationContext getApplicationContext() { | 
|         return applicationContext; | 
|     } | 
|   | 
|     /** | 
|      * 获取对象 这里重写了bean方法,起主要作用 | 
|      */ | 
|     public static  <T> T getBean(String beanId) throws BeansException { | 
|         if (applicationContext == null) { | 
|             return null; | 
|         } | 
|         return (T) applicationContext.getBean(beanId); | 
|     } | 
|   | 
|     /** | 
|      * 获取当前环境 | 
|      */ | 
|     public static String getActiveProfile() { | 
|         return applicationContext.getEnvironment().getActiveProfiles()[0]; | 
|     } | 
|   | 
| } |