一种获取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");

时间: 2024-10-10 02:48:30

一种获取spring环境上下文方法:SpringContextUtil的相关文章

介绍几种搭建Dojo环境的方法

Hello World! 的时间到了,在你所学过的众多语言中,哪个不是从此学起的呢?但在此之前,我们要先构建一个开发环境,如同刚开始学习Java的时候,还是需要我们先安装JDK.配置好环境变量等等,HelloWorld才会乖乖的显示在命令行上. 对于脚本类语言,开发环境就是文本编辑器+语言包(dojo.js),对于学习JavaScript来说更简单,只需要有主流浏览器作为支持就够了,浏览器就能来解析它.对于Dojo的开发环境,有以下几类: 介绍几种搭建Dojo环境的方法 下载Dojo文件 在ht

点击回应、关闭确认以及另一种获取设备环境句柄的方法

API模板:https://www.cnblogs.com/eternalmoonbeam/p/10793080.html 点击回应: switch (message) { …… case WM_LBUTTONUP://当鼠标左键弹起 MessageBox(NULL, TEXT("I was clicked"), TEXT("Client"), MB_OK); return 0; …… } 关闭确认: switch (message) { …… case WM_CL

获取Spring Bean工具类SpringContextUtil

有时候需要在非Spring环境获取Spring的Bean import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import o

获取spring容器对象方法和原因

为什么要获取Spring容器对象:拿到spring容器对象后,你就可以用spring管理的bean了,拿到bean,自然可以使用bean的方法,场景:比如jsp页面.通过注解是无法注入bean的,在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.spring提供了一个工具类WebApplicationContextUtils,就可以拿到了 样例:比如我们项目的代码,在jsp中: 原文地址:http

对几种获取字符串长度的方法进行性能比较

测试环境: 操作系统:CentOS release 6.8 (Final) 操作环境:vi编辑器 任务:对获取字符串长度的几种统计方法的性能比较. 测试数据如下: 1.变量自带的获取长度的方法 [[email protected] scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo ${#char} &>/dev/null;done real    0m19.712s user    

两种获取python版本的方法

方法1:查看python版本 import sys print("当前python版本",sys.version) 方法2:cmd框中查看的两种方式 原文地址:https://www.cnblogs.com/studybrother/p/10909750.html

php 两种获取分类树的方法

1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分类级别 * @return string */function getCategory($array, $pid =0, $level = 0){ //声明静态数组,避免递归调用时,多次声明导致数组覆盖 static $list = []; foreach ($array as $key => $value){ //第一次遍历,

如何在Web启动时获取Spring 上下文环境

问题如题,本文给出一个解决方案,满足以下要求: (1)Web启动时能自动获取Spring 的上下文,从而用户可以随意的获取其中的Bean. (2)在单文件测试环境中,亦可以根据配置文件路径加载Spring上下文. 大致原理为: Spring 启动时,会给任何一个实现了ApplicationContextAware接口的Bean(也可以叫做类),注入一个构造函数参数:applicationContext. 有了这样的一个类,就可以在自己的代码里轻松的获取上下文了. 编写这样的一个类还有个好处,那就

获取spring的ApplicationContext几种方式【转】

转自:http://blog.sina.com.cn/s/blog_9c7ba64d0101evar.html Java类获取spring 容器的bean 常用的5种获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 代码: 1 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); 2 ac.getBean(&qu