有时候在java类中想直接使用spring中的bean,用SpringContextUtil可以方便使用:

package cn.zgjkw.util;

import javax.servlet.ServletContext;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.AbstractRefreshableApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class SpringContextUtil implements ApplicationContextAware {
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
*/
@SuppressWarnings("unchecked")
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
*/
@SuppressWarnings("unchecked")
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);
}

/** 
* @功能:重新加载Spring配置文件
* @作者:Chendw
* @时间:2010-9-16 上午09:41:15
* @版本:
* @param servletContext
*/
public static void reload(ServletContext servletContext) {

WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);

if (context.getParent() != null) {
((AbstractRefreshableApplicationContext) context.getParent()).refresh();
}

((AbstractRefreshableApplicationContext) context).refresh();

}
}

SpringContextUtil相关推荐

  1. java技术--SpringContextUtil类的作用

    企业级开发过程中,一般使用Spring注解开发.使用注解获取Spring容器管理的类(这些类都必须是Spring容器中的类)! 开发过程中,有时会遇到需要在普通类中注入spring管理的单例bean. ...

  2. ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用

    如果说BeanFactory是Spring的心脏,那么ApplicationContext就是完整的身躯了.ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用 ...

  3. JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构

    0. 大背景 众所周知,REST架构已经成为现代服务端的趋势. 很多公司,已经采用REST作为App, H5以及其它客户端的服务端架构. 1. 什么是JAX-RS? JAX-RS是JAVA EE6 引 ...

  4. 最全的 Spring 依赖注入方式,你都会了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 前言 Spring 正如其名字,给开发者带来了春天,Spring 是为解决企业级应用开发的复杂性而设计的一款框架,其设计理念就是:简 ...

  5. redistemplate分布式锁实现_基于 Redis SETNX 实现分布式锁

    环境与配置 Redis 任意版本即可 SpringBoot 任意版本即可,但是需要依赖 spring-boot-starter-data-redis <dependency><gro ...

  6. spring显式获取bean

    2019独角兽企业重金招聘Python工程师标准>>> 1.实现ApplicationContextAware接口 package com.caiya.test.springboot ...

  7. spring获取bean的方案

    创建一个工具类SpringContextsUtil ,通过实现Spring中的ApplicationContextAware接口,在applicationContext.xml中注入bean后Spri ...

  8. c++switch实现猜拳_策略模式+简单工厂+注解消除 if-else/switch-case

    消除代码中的 if-else/switch-case 在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现.做的 ...

  9. SpringBoot使用security和jwt进行鉴权设计

    一.使用security默认登录接口登录成功.生成token.返回前段 项目的结构如下: 1.引入jar包 <dependency><groupId>org.springfra ...

最新文章

  1. 用XInput库使用xbox360手柄
  2. 第二十二章:动画(八)
  3. 为什么超长列表数据的翻页技术实现复杂(二)
  4. 前端:JS/37/canvas对象(画布对象),用canvas对象(画布)画一些基本的图像
  5. python selenium解决报错SessionNotCreatedException session not created: No matching capabilitie与问题解析
  6. pthread_create()函数
  7. 监督学习的分类:判别/生成模型,概率/非概率模型、参数/非参数模型
  8. matlab报错索引超出数组范围
  9. 华为状态栏图标替换_【新手教程】状态栏图标替换教程
  10. 新的开始——参加培训
  11. 数据结构(十四)——二叉树
  12. 均匀白噪声的定义及特点_白噪声深度分析
  13. 华中邀请四届 WHU1567 Sloth's Angry
  14. 幽游白书雕像:岁月流转,闪耀如初,我回来了
  15. 小程序typescript_16天:从概念到实现的TypeScript应用程序
  16. H5页面免费制作工具大集合
  17. 手机学习利器Qpython
  18. 获取树结构JAVA代码设计
  19. C# 实例解释面向对象编程中的单一职责原则
  20. Android模拟器报extra space is needed in addition to APK size的错误

热门文章

  1. 测试socket udp 单次传输数据上限(sendto()函数data不能超过65507字节。udp头占8字节,ip头占20字节,加起来正好65535字节)
  2. win10如何将已有python环境变量添加到电脑中 错误 Fatal error in launcher: Unable to create process using pip.exe 解决办法
  3. JDK1.8 stream详解(转)
  4. js 调用php 导出表格,[拿来主义]使用layui纯JS导出html页面中的table为excel
  5. docker脚本安装 阿里云_让运行在 Docker 中的 Ghost 支持阿里云 OSS
  6. idrmyimage 技巧_王者荣耀公孙离2000场-心得技巧,教你究极进阶!
  7. java自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
  8. 永恒之蓝漏洞原理 445_新代码漏洞“永恒之黑”该如何警惕?
  9. rnn按时间展开_作词家下岗系列:教你用 RNN 算法做一个写词软件
  10. linux内核响应,读书笔记——Linux内核源代码情景分析——3.4  中断的响应和服务...