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");


     

  • 相关阅读:
    四轴无人机原理
    python中同步、多线程、异步IO、多线程对IO密集型的影响
    匿名四轴上位机使用手册
    python异步编程--回调模型(selectors模块)
    Python多线程异步任务队列
    jenkins配置邮箱服务器(126邮箱)
    We wanted {"required":["value"]} and you sent ["text","value","id","sessionId"]
    Updates were rejected because the remote contains work that you do
    Git更新代码
    Git 从github克隆文件至本地
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010068.html
Copyright © 2011-2022 走看看