• 一种获取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绘图工具Plotly的简单使用
    gitlab runner安装与使用
    Ubuntu16.04下postgresql-10
    gitlab汉化
    Ubuntu 16.04 安装Gitlab
    Ubuntu-18.04安装Docker
    微信公众平台消息接口开发 彩票查询
    微信开发高级群发接口
    微信公众平台消息接口开发 快递查询
    搭建个人wordpress博客(小白教程)
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010068.html
Copyright © 2020-2023  润新知