zoukankan      html  css  js  c++  java
  • 一种获取spring环境上下文方法:SpringContextUtil

    获得spring里注册Bean的有好几种方法,这里介绍一种比较简单的方法:


     
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
     
    /**
     *功能描述:获取spring容器,以访问容器中定义的其他bean 
     */
      /**  
     
    public class SpringContextUtil implements ApplicationContextAware {


      /** 
      * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. 
      *   
      *  
      */
            private static ApplicationContext applicationContext; //Spring应用上下文环境   
     
            /**  
             * 实现ApplicationContextAware接口的回调方法,设置上下文环境     
             * @param applicationContext  
             * @throws BeansException  
             */
            public void setApplicationContext(ApplicationContext applicationContext)
                            throws BeansException {
                    SpringContextUtil.applicationContext = applicationContext;
            }
     
            /**  
             * @return ApplicationContext  
             */
            public static ApplicationContext getApplicationContext() {
                    return applicationContext;
            }
     
            /**  
             * 获取对象     
             * @param name  
             * @return Object 一个以所给名字注册的bean的实例  
             * @throws BeansException  
             */
            public static Object getBean(String name) throws BeansException {
                    return applicationContext.getBean(name);
            }
     
            /**  
             * 获取类型为requiredType的对象  
             * 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)  
             * @param name       bean注册名  
             * @param requiredType 返回对象类型  
             * @return Object 返回requiredType类型对象  
             * @throws BeansException  
             */
            public static Object getBean(String name, Class requiredType)
                            throws BeansException {
                    return applicationContext.getBean(name, requiredType);
            }
     
            /**  
             * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true   
             * @param name  
             * @return boolean  
             */
            public static boolean containsBean(String name) {
                    return applicationContext.containsBean(name);
            }
     
            /**  
             * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。  
             * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)     
             * @param name  
             * @return boolean  
             * @throws NoSuchBeanDefinitionException  
             */
            public static boolean isSingleton(String name)
                            throws NoSuchBeanDefinitionException {
                    return applicationContext.isSingleton(name);
            }
     
            /**  
             * @param name  
             * @return Class 注册对象的类型  
             * @throws NoSuchBeanDefinitionException  
             */
            public static Class getType(String name)
                            throws NoSuchBeanDefinitionException {
                    return applicationContext.getType(name);
            }
     
            /**  
             * 如果给定的bean名字在bean定义中有别名,则返回这些别名     
             * @param name  
             * @return  
             * @throws NoSuchBeanDefinitionException  
             */
            public static String[] getAliases(String name)
                            throws NoSuchBeanDefinitionException {
                    return applicationContext.getAliases(name);
            }
    }

    -------------------
    调用:

    UserService userService = (UserService) SpringContextUtil.getBean("userService");


     

  • 相关阅读:
    微软一站式示例代码浏览器 v5.1 更新
    Developers’ Musthave: the new Microsoft AllInOne Code Framework Sample Browser and 3500+ samples
    栈溢出攻击 [转]
    深入浅出Java的访问者模式 [转]
    优先级反转 [转]
    latex 引用section [转]
    linux内存管理浅析 [转]
    静态,动态,强类型,弱类型 [转]
    linux硬链接与软链接 [转]
    GCC __attribute__ 详解 [转]
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010068.html
Copyright © 2011-2022 走看看