当前位置: 首页 > news >正文

Spring工具类(获取bean,发布事件)

spring-beans-5.3.1.jar

@Component
public final class SpringUtils implements BeanFactoryPostProcessor{/*** Spring应用上下文环境*/private static ConfigurableListableBeanFactory beanFactory;//初始化成员变量@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {SpringUtils.beanFactory = beanFactory;}/*** 获取对象** @param name* @return Object 一个以所给名字注册的bean的实例* @throws org.springframework.beans.BeansException*/@SuppressWarnings("unchecked")public static <T> T getBean(String name) throws BeansException {return (T) beanFactory.getBean(name);}/*** 获取类型为requiredType的对象** @param clz* @return* @throws org.springframework.beans.BeansException*/public static <T> T getBean(Class<T> clz) throws BeansException {T result = (T) beanFactory.getBean(clz);return result;}/*** 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true** @param name* @return boolean*/public static boolean containsBean(String name) {return beanFactory.containsBean(name);}/*** 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)** @param name* @return boolean* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException*/public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return beanFactory.isSingleton(name);}/*** @param name* @return Class 注册对象的类型* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException*/public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {return beanFactory.getType(name);}/*** 如果给定的bean名字在bean定义中有别名,则返回这些别名** @param name* @return* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException*/public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {return beanFactory.getAliases(name);}
}
/*** SpringContext* @author jack*/
@Slf4j
@Service
@Lazy(false)
public class SpringContextHolder implements ApplicationContextAware, DisposableBean {private static ApplicationContext applicationContext = null;/*** 取得存储在静态变量中的ApplicationContext.*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 实现ApplicationContextAware接口, 注入Context到静态变量中.*/@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {SpringContextHolder.applicationContext = applicationContext;}/*** 清除SpringContextHolder中的ApplicationContext为Null.*/public static void clearHolder() {if (log.isDebugEnabled()) {log.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext);}applicationContext = null;}/*** 发布事件** @param event*/public static void publishEvent(ApplicationEvent event) {if (applicationContext == null) {return;}applicationContext.publishEvent(event);}/*** 实现DisposableBean接口, 在Context关闭时清理静态变量.*/@Override@SneakyThrowspublic void destroy() {SpringContextHolder.clearHolder();}/*** 获取运行环境* @return*/public static String getActiveProfile() {return applicationContext.getEnvironment().getActiveProfiles()[0];}}
http://www.lryc.cn/news/138668.html

相关文章:

  • 腾讯云和阿里云服务器折扣对比_看看哪家划算?
  • GO语言中的Defer与Error异常报错详细教程
  • AP6315 DC单节锂电池充电IC 同步2A锂电芯片
  • PDF校对工具正式上线,为用户提供卓越的文档校对解决方案
  • WSL 配置 Oracle 19c 客户端
  • ChatGPT⼊门到精通(1):ChatGPT 是什么
  • idea启动正常,打成jar包时,启动报错
  • 软考高级系统架构设计师系列论文八十九:论软件需求分析方法和工具的选用
  • java八股文面试[JVM]——类加载器
  • CSS中如何实现元素之间的间距(Margin)合并效果?
  • 【实操干货】如何开始用Qt Widgets编程?(三)
  • 基于深度学习的图像风格迁移发展总结
  • 小程序页面间有哪些传递数据的方法?
  • bh002- Blazor hybrid / Maui 保存设置快速教程
  • 同源政策与CORS
  • 科技资讯|三星再申请智能戒指商标,智能穿戴进入更小型化发展
  • HarmonyOS开发第一步,熟知开发工具DevEco Studio
  • 【应急响应】Linux常用基础命令
  • 什么是Pytorch?
  • Baidu World 2023,定了!
  • ProxySQL+MGR高可用搭建
  • 【Unity小技巧】在Unity中实现类似书的功能(附git源码)
  • STM32设置为I2C从机模式(HAL库版本)
  • 牛客网Verilog刷题 | 入门特别版本
  • ROS通信机制之话题(Topics)的发布与订阅以及自定义消息的实现
  • 容灾设备系统组成,容灾备份系统组成包括哪些
  • 腾讯云服务器租用价格表_一年、1个月和1小时报价明细
  • 【java安全】JNDI注入概述
  • 零基础如何使用IDEA启动前后端分离中的前端项目(Vue)?
  • laravel实现AMQP(rabbitmq)生产者以及消费者