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


     

  • 相关阅读:
    Struts2拦截器
    struts2介绍
    java读写文件大全
    Intent的详细解析以及用法
    sigmoid和softmax的应用意义区别
    C 实现 创建多个txt文件,并以自然数列命名,然后将产生的十进制数据写入txt文档
    k-means原理和python代码实现
    非极大值抑制 NMS
    JetSonNano darknet yolov3工程通过CMakeLists.txt配置编译环境
    C文件 CMakeList.txt编译器配置错误的问题 error:invalid conversion from 'int' to 'LAYER_TYPE' [-fpermissive]....
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010068.html
Copyright © 2011-2022 走看看