123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package org.jeecg.common.util;
- import cn.hutool.core.util.ObjectUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- /**
- * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
- *
- * @author zyf
- */
- @Slf4j
- public class SpringContextHolder implements ApplicationContextAware {
- private static ApplicationContext applicationContext;
- /**
- * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
- */
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) {
- // NOSONAR
- SpringContextHolder.applicationContext = applicationContext;
- }
- /**
- * 取得存储在静态变量中的ApplicationContext.
- */
- public static ApplicationContext getApplicationContext() {
- checkApplicationContext();
- return applicationContext;
- }
- /**
- * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
- */
- public static <T> T getBean(String name) {
- checkApplicationContext();
- return (T) applicationContext.getBean(name);
- }
- /**
- * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
- */
- public static <T> T getHandler(String name, Class<T> cls) {
- T t = null;
- if (ObjectUtil.isNotEmpty(name)) {
- checkApplicationContext();
- try {
- t = applicationContext.getBean(name, cls);
- } catch (Exception e) {
- log.error("####################" + name + "未定义");
- }
- }
- return t;
- }
- /**
- * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
- */
- public static <T> T getBean(Class<T> clazz) {
- checkApplicationContext();
- return applicationContext.getBean(clazz);
- }
- /**
- * 清除applicationContext静态变量.
- */
- public static void cleanApplicationContext() {
- applicationContext = null;
- }
- private static void checkApplicationContext() {
- if (applicationContext == null) {
- throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
- }
- }
- }
|