JAVA-Spring容器工具类

spring容器获取bean

public class ApplicationContextSupport implements ApplicationContextAware {
    private final static Logger LOGGER	= LoggerFactory.getLogger(ApplicationContextSupport.class);
    private static ApplicationContext	context;

    public void setApplicationContext(ApplicationContext ctx) throws BeansException {
        context = ctx;
    }

    public static ApplicationContext getContext() {
        return context;
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) {
        try {
            if (context != null) { return (T) context.getBean(name); }
        } catch (Exception e) {
            LOGGER.warn(e.getMessage());
        }
        return null;
    }

    public static <T> T getBean(Class<T> clz) {
        try {
            String[] beanNames = context.getBeanNamesForType(clz);
            if (beanNames != null && beanNames.length > 0) { return context.getBean(beanNames[0], clz); }
        } catch (Exception e) {
            LOGGER.warn(e.getMessage());
        }
        return null;
    }

    public static <T> T registerBean(String id, Class<T> clz) {
        try {
            ConfigurableApplicationContext cac = (ConfigurableApplicationContext) context;
            DefaultListableBeanFactory dlbf = (DefaultListableBeanFactory) cac.getBeanFactory();
            BeanDefinitionBuilder bdb = BeanDefinitionBuilder.genericBeanDefinition(clz);
            dlbf.registerBeanDefinition(id, bdb.getRawBeanDefinition());
        } catch (Exception e) {
            LOGGER.warn(e.getMessage());
        }
        return getBean(id);
    }


    /**
     * 获取当前环境
     *
     * @return
     */
    public static String getActiveProfile(){
        return context.getEnvironment().getActiveProfiles()[0];
    }

}

猜你喜欢

转载自blog.csdn.net/caryeko/article/details/141320933