代码实现:

package com.ht.util;

import java.util.Map;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
System.out.println("applicationContext配置文件加载成功!!!!");
} /**
* @Title: getApplicationContext
* @Description: 获取应用上下文环境
* @return
*/
public static ApplicationContext getApplicationContext() {
checkApplicationContext();
return applicationContext; } /**
* @Title: getBean
* @Description: 根据bean对象的名字获取bean
* @param name
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) {
checkApplicationContext();
return (T) applicationContext.getBean(name);
} /**
* @Title: getBean
* @Description: 用反射的方法获取bean,如果有多个符合条件的,则返回第一个
* @param clzz
* @return 返回类型
*/
public static <T> T getBean(Class<T> clzz) {
checkApplicationContext();
Map<String, T> mapBeans = applicationContext.getBeansOfType(clzz);
if (mapBeans != null && !mapBeans.isEmpty()) {
return (T) mapBeans.values().iterator().next();
} else {
return null;
}
} /**
* @Title: checkApplicationContext
* @Description: 检查applicationContext是否初始化
* @return 返回类型
*/
public static void checkApplicationContext() {
if (applicationContext == null) {
throw new IllegalStateException("applicationContext.xml文件没有加载或者SpringContextUtil没有在applicationContext.xml中注入!!!!!");
}
}
}

注:

  1. 该工具类必须实现接口ApplicationContextAware,该接口中有一个方法:void setApplicationContext(ApplicationContext applicationContext),
  2. 该util必须要在sping的ioc容器中注册,否者在加载applicationContext.xml时,该util的applicationContext不会被初始化
  3. 通过SpringContextUtil.getBean()可以获取ioc容器中任何一个bean对象。

测试代码:

package com.shareboxes.test;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.shareboxes.model.Student;
import com.shareboxes.util.springUtil; public class testSpringUtil { @BeforeClass
public static void load(){
@SuppressWarnings("unused")
ApplicationContext aContext=new ClassPathXmlApplicationContext(new String[]{"mvcContext.xml"});
} @Test
public void testUtil(){
Student student=springUtil.getBean("student");//用spring工具类获取Student对象
System.out.println(student); }
}

Spring容器的工具类的更多相关文章

  1. Spring 的优秀工具类盘点

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  2. Spring 的优秀工具类盘点第 2 部分

    特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题. ...

  3. Spring 的优秀工具类盘点---转

    第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的 ...

  4. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  5. Spring的StringUtils工具类

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:<Spring的StringUtils工具类> org.springframework.util.StringU ...

  6. Spring获取bean工具类,可用于在线程里面获取bean

    Spring获取bean工具类,可用于在线程里面获取bean import java.util.Locale; import org.springframework.beans.BeansExcept ...

  7. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  8. Spring 的优秀工具类盘点第 1 部分

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  9. spring常用的工具类

    spring给我们提供了很多的工具类, 应该在我们的日常工作中很好的利用起来. 它可以大大的减轻我们的平时编写代码的长度. 因我们只想用spring的工具类, 而不想把一个大大的spring工程给引入 ...

随机推荐

  1. 大数据笔记02:大数据之Hadoop的生态系统和版本

    1.Hadoop的生态系统: (1)图1: (2)图2: 图1 和 图2 都是形象说明了Hadoop的生态圈. 2.举例介绍Hadoop生态圈的小工具: (1)Hive工具(中文意思:小蜜蜂) 利用H ...

  2. 用Hexo搭建属于自己的Blog

    什么是Hexo 简单的来说,Hexo是一款基于Node.JS的静态博客框架,官方给它的描述是"A fast, simple & powerful blog framework&quo ...

  3. Citrix Presentation server can not contact the license server

    If you come across the above error,  you may also come across one or more of the errors below within ...

  4. 最小生成树--->NYOJ-38 布线问题

    此题是最基础的最小生成树的题目,有两种方法, 一个是prim一个是kruskal算法,前者利用邻接矩阵,后者是利用边集数组 prim算法的思想是:一个点一个点的找, 先找从第一个点到其他点最小的, 把 ...

  5. vs2012加载EntityFrameWork框架,连接Oracel

    近日公司用到.net MVC框架做接口,需连接到Oracel数据库,从网上查阅了一些资料,当然,从咱们博客园获益匪浅.然后结合自己所做,把使用过程中遇到的一些问题,及如何解决的整理如下,方便查阅,也有 ...

  6. sharepoint查询超出阈值

    昨天客户出了webpart显示数据不稳定的bug,经过这两天的艰苦排查终于发现了是列表视图阈值造成的问题,经过在网上搜索终于找到了类似的解决方法. SPQuery query = new SPQuer ...

  7. 【转】三十分钟学会STL算法

    转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...

  8. SVN库迁移整理方法总结

    有时候需要从一台机器迁移svn存储库到另外一台机器,如果数据量非常大的话,没有好的方法是很不方便的,其实迁移svn跟迁移mysql差不多,也有导出导入的方案 以下是subversion官方推荐的备份方 ...

  9. iOS更改ShareSDK默认的分享功能界面

    ShareSDK的集成这里就不详细介绍了, 官网的都已经够详细了.. 官方的默认分享样式如下: 贴上我的源代码: // 创建分享图片 NSString *imageURLString = @" ...

  10. 常用shell笔记

    一. vi 编辑文件 1. 删除字符:在只读模式下,X:大字的X,每按一次删除光标所在位置的前面一个字符:x:小写字母x  每按一次删除光标所在位置的后面一个字符 2. 进入编辑模式:i.a.o切换进 ...