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


     

  • 相关阅读:
    JQuery 点击子控件事件,不会触发父控件的事件
    JQuery对Style和css设置
    2019vue学习视频(入门到精通)
    新建一个vue项目
    FIS3 构建
    node环境变量
    阿里云重启ssh
    msf 获取session 之后
    acccheck (暴力破解使用SMB协议的Windows密码)
    利用 Cut 指定输出内容
  • 原文地址:https://www.cnblogs.com/aukle/p/3223592.html
Copyright © 2011-2022 走看看