码迷,mamicode.com
首页 > 编程语言 > 详细

一种获取spring环境上下文方法:SpringContextUtil

时间:2015-10-10 12:04:29      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

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

一种获取spring环境上下文方法:SpringContextUtil

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4866376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!