zoukankan      html  css  js  c++  java
  • 工具类spring工具类 方便在非spring管理环境中获取bean

    package com.jyc.common.utils.spring;

    import com.jyc.common.utils.StringUtils;
    import org.springframework.aop.framework.AopContext;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;
    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工具类 方便在非spring管理环境中获取bean
    *
    * @author jianyongchao
    */
    @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;
    }

    /**
    * 获取对象
    *
    * @param name
    * @return Object 一个以所给名字注册的bean的实例
    * @throws org.springframework.beans.BeansException
    *
    */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) throws BeansException
    {
    return (T) beanFactory.getBean(name);
    }

    /**
    * 获取类型为requiredType的对象
    *
    * @param clz
    * @return
    * @throws org.springframework.beans.BeansException
    *
    */
    public static <T> T getBean(Class<T> clz) throws BeansException
    {
    T result = (T) beanFactory.getBean(clz);
    return result;
    }

    /**
    * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
    *
    * @param name
    * @return boolean
    */
    public static boolean containsBean(String name)
    {
    return beanFactory.containsBean(name);
    }

    /**
    * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException
    *
    * @param name
    * @return boolean
    * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
    *
    */
    public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
    {
    return beanFactory.isSingleton(name);
    }

    /**
    * @param name
    * @return Class 注册对象的类型
    * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
    *
    */
    public static Class<?> getType(String name) throws NoSuchBeanDefinitionException
    {
    return beanFactory.getType(name);
    }

    /**
    * 如果给定的bean名字在bean定义中有别名,则返回这些别名
    *
    * @param name
    * @return
    * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
    *
    */
    public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
    {
    return beanFactory.getAliases(name);
    }

    /**
    * 获取aop代理对象
    *
    * @param invoker
    * @return
    */
    @SuppressWarnings("unchecked")
    public static <T> T getAopProxy(T invoker)
    {
    return (T) AopContext.currentProxy();
    }

    /**
    * 获取当前的环境配置,无配置返回null
    *
    * @return 当前的环境配置
    */
    public static String[] getActiveProfiles()
    {
    return applicationContext.getEnvironment().getActiveProfiles();
    }

    /**
    * 获取当前的环境配置,当有多个环境配置时,只获取第一个
    *
    * @return 当前的环境配置
    */
    public static String getActiveProfile()
    {
    final String[] activeProfiles = getActiveProfiles();
    return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null;
    }
    }
  • 相关阅读:
    mybatis sql xml 字符逃脱
    npp 文本编辑器 开源
    保存分区表时出现错误(0000000001)函数不正确
    常见笔记本进入bios方法
    chrome 字体太浅,如何设置
    Python基础概念
    xp下复制ZIP文件极慢,右键点击也极慢(ZIP文件越大越慢) 解决方法
    联想V460 装XP。记录
    极度诡异的内存问题,这几天遇到。特记录
    时间注意事项
  • 原文地址:https://www.cnblogs.com/qq3245792286/p/15470422.html
Copyright © 2011-2022 走看看