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

SpringUtils 工具类,方便在非spring管理环境中获取bean

应用场景
1 可用在工具类中,
2 spring【Controller,service】环境中,
3 其中的一个方法getAopProxy可获得代理对象,需要将 @EnableAspectJAutoProxy(exposeProxy = true) 允许获取代理对象

import org.springframework.aop.framework.AopContext;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** spring工具类 方便在非spring管理环境中获取bean** @author ruoyi*/
@Component
public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware {/*** Spring应用上下文环境*/private static ConfigurableListableBeanFactory beanFactory;private static ApplicationContext applicationContext;@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {SpringUtils.beanFactory = beanFactory;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringUtils.applicationContext = applicationContext;}/*** 获取对象** @param name* @return Object 一个以所给名字注册的bean的实例* @throws BeansException*/@SuppressWarnings("unchecked")public static <T> T getBean(String name) throws BeansException {return (T) beanFactory.getBean(name);}/*** 获取类型为requiredType的对象** @param clz* @return* @throws 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 NoSuchBeanDefinitionException*/public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return beanFactory.isSingleton(name);}/*** @param name* @return Class 注册对象的类型* @throws NoSuchBeanDefinitionException*/public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {return beanFactory.getType(name);}/*** 如果给定的bean名字在bean定义中有别名,则返回这些别名** @param name* @return* @throws NoSuchBeanDefinitionException*/public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {return beanFactory.getAliases(name);}/*** 获取aop代理对象** @param invoker* @return*/@SuppressWarnings("unchecked")public static <T> T getAopProxy(T invoker) {return (T) AopContext.currentProxy();}/*** 获取当前的环境配置,无配置返回null** @return 当前的环境配置*/public static String[] getActiveProfiles() {return applicationContext.getEnvironment().getActiveProfiles();}/*** 获取配置文件中的值** @param key 配置文件的key* @return 当前的配置文件的值*/public static String getRequiredProperty(String key) {return applicationContext.getEnvironment().getRequiredProperty(key);}
}

相关文章:

SpringUtils 工具类,方便在非spring管理环境中获取bean

应用场景&#xff1a; 1 可用在工具类中&#xff0c; 2 spring【Controller,service】环境中&#xff0c; 3 其中的一个方法getAopProxy可获得代理对象&#xff0c;需要将 EnableAspectJAutoProxy(exposeProxy true) 允许获取代理对象 import org.springframework.aop.framew…...

JavaWeb之请求

请求 客户端请求由ServletRequest类型的request对象表示&#xff0c;在HTTP请求场景下&#xff0c;容器提供的请求对象的具体类型为HttpServletRequest HTTP的请求消息分为三部分&#xff1a;请求行、请求头、请求正文。 请求行对应方法 // 获取请求行中的协议名和版本public S…...

VsCode中常用的正则表达式操作

在vscode中可以使用正则表达式来进行搜索内容&#xff0c;极大的方便了我们对大量数据中需要查看的信息进行筛选&#xff0c;使用正则搜索时点击 .* 此文章会持续补充常用的正则操作 1.光标选中搜索到的内容 将搜索的内容进行全选&#xff0c;举例&#xff1a;在如下文件中我需…...

ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces

ubuntu22.04laptop OpenCV Get Started: 007_color_spaces 1. 源由2. 颜色空间2.1 RGB颜色空间2.2 LAB颜色空间2.3 YCrCb颜色空间2.4 HSV颜色空间 3 代码工程结构3.1 C应用Demo3.2 Python应用Demo 4. 重点分析4.1 interactive_color_detect4.2 interactive_color_segment4.3 da…...

mysql 查询性能优化关键点总结

MySQL查询性能优化是数据库管理的重要环节&#xff0c;良好的性能优化可以提高查询效率&#xff0c;降低系统负载。以下是一些关键点&#xff0c;用于优化MySQL查询性能&#xff1a; 1. 索引优化 索引是MySQL查询优化的重要手段&#xff0c;合理的索引可以大大…...

React - 分页插件默认是英文怎么办

英文组件的通用解决方案 这里以分页插件为例&#xff1a; 大家可以看到&#xff0c;最后的这个页面跳转提示文字为Go to&#xff0c;不是中文&#xff0c;而官网里面的案例则是&#xff1a; 解决方案&#xff1a; import { ConfigProvider } from antd; import zhCN from an…...

揭开Markdown的秘籍:引用|代码块|超链接

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 引用1.1 &#x1f514;引用1.2 &#x1f514;嵌套引用1.3 &…...

【C语言】Debian安装并编译内核源码

在Debian 10中安装并编译内核源码的过程如下&#xff1a; 1. 安装依赖包 首先需要确保有足够的权限来安装包。为了编译内核&#xff0c;需要有一些基础的工具和库。 sudo apt update sudo apt upgrade sudo apt install build-essential libncurses-dev bison flex libssl-d…...

使用 C++23 从零实现 RISC-V 模拟器(6):权限支持

本节内容增加了权限表示&#xff0c;设置了三种权限。当 cpu 初始化时默认的权限为 Machine 模式。接下来实现这三种特权模式&#xff0c;随后实现 sret 和 mret 指令。 RISC-V定义了三种特权等级&#xff0c;分别是用户态&#xff08;User Mode&#xff09;、监管态&#xff…...

针对某终端安全自检钓鱼工具的分析

前言 朋友微信找到我&#xff0c;说某微信群利用0day通告进行钓鱼&#xff0c;传播名为“终端安全自检工具”的恶意文件&#xff0c;然后还给了两个IP地址&#xff0c;如下&#xff1a; 咱们就来详细看看这个工具吧。 样本信息 拿到样本&#xff0c;样本的图标&#xff0c;如…...

XSS数据接收平台

一.使用xss数据接收平台的好处&#xff1a; 正常执行反射型xss和存储型xss&#xff0c;反射型xss在执行poc时&#xff0c;会直接在页面弹出执行注入的poc代码&#xff1b;存储型则是&#xff0c;在将poc代码注入用户的系统中后&#xff0c;用户访问有存储型xss的地方&#xff…...

MySQL 基础知识(六)之数据查询(一)

目录 1 基本查询 1.1 查询相关列 (select * / 列名) 1.2 别名 (as) 1.3 去重 (distinct) 1.4 对列中的数据进行运算 (、-、*、/) 2 条件查询 (where) 2.1 等值查询 () 2.2 非等值查询 (>、<、>、<、!、><) 2.3 逻辑判断 (and、or、not) 2.4 区间判…...

C#使用哈希表对XML文件进行查询

目录 一、使用的方法 1.Hashtable哈希表 2.Hashtable哈希表的Add方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;示例 3.XML文件的使用 二、实例 1.源码 2.生成效果 可以通过使用哈希表可以对XML文件进行查询。 一、使用的方法 1.Hashtable哈希表…...

vscode写MATLAB配置

vscode写MATLAB python下载 官网说明Versions of Python Compatible with MATLAB Products by Release - MATLAB & Simulink 不确定这三列都表示什么意思&#xff0c;尽量安装这三列都有的python版本吧&#xff0c;我安装的 MATLAB R2023b,python选择的是3.11.5 …...

第13章 网络 Page734 “I/O对象”的链式传递 单独的火箭发射函数,没有用对的智能指针

上一篇博文中&#xff0c;我们使用单独的火箭发射函数&#xff0c;结果什么结果也没有得到&#xff0c;原因是launch_rocket()函数结束时&#xff0c;其内的局部对象counter生命周期也结束了 那么可以将counter改为指针吗&#xff1f;在堆中分配&#xff0c;这样当函数退出时&…...

Git 存储大文件

Git 存储大文件处理方法 寻找大文件的后缀LFS的安装让仓库支持LFS添加到LFS提交 寻找大文件的后缀 find . -type f -size 10M | grep -v ".git" | rev | cut -d. -f1 | rev | sort | uniq这个命令的工作原理如下&#xff1a; find .-type f -size 10M&#xff1a;查…...

使用 Mermaid 创建流程图,序列图,甘特图

使用 Mermaid 创建流程图和图表 Mermaid 是一个流行的 JavaScript 库&#xff0c;用于创建流程图、序列图、甘特图和其他各种图表。它的简洁语法使得创建图表变得非常简单&#xff0c;无需复杂的绘图工具或专业的编程技能。在本文中&#xff0c;我们将讲解如何使用 Mermaid 来创…...

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇&#xff0c;这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里&#xff1a; 政安晨&#xff1a;在Jupyter中【示例演绎】Matplotlib的官方指南&#xff08;一&#xff09;{Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…...

gem5学习(20):替换策略——Replacement Policies

目录 一、Random 二、Least Recently Used (LRU) 三、Tree Pseudo Least Recently Used (TreePLRU) 四、Bimodal Insertion Policy (BIP) 五、LRU Insertion Policy (LIP) 六、Most Recently Used (MRU) 七、Least Frequently Used (LFU) 八、First-In, First-Out (FIF…...

嵌入式Qt Qt中的字符串类

一.Qt中的字符串类 QString vs string&#xff1a; QString在Qt库中几乎是无所不在的 所有的Qt图形用户组件都依赖于QString 实验1 &#xff1a;QString 初体验 #include <QDebug> void Sample_1() {QString s "add";s.append(" "); // &q…...

用 Bedrock AgentCore SDK 把 OpenClaw Agent 部署到 AWS 托管运行时:从本地开发到生产上线全流程

用 Bedrock AgentCore SDK 把 OpenClaw Agent 部署到 AWS 托管运行时&#xff1a;从本地开发到生产上线全流程 手里有个跑得好好的 OpenClaw Agent&#xff0c;想搬到 AWS 上让它自动扩缩、有监控有告警&#xff1f;Amazon Bedrock AgentCore 就是干这个的——把任意框架的 AI …...

如何用Marzipano构建高性能360度全景图应用?

如何用Marzipano构建高性能360度全景图应用&#xff1f; 【免费下载链接】marzipano A 360 media viewer for the modern web. 项目地址: https://gitcode.com/gh_mirrors/ma/marzipano Marzipano是一个由Google开发的现代Web 360度媒体查看器&#xff0c;专为构建沉浸式…...

实战react项目:基于快马ai快速构建包含图表与导航的用户数据仪表盘

最近在做一个用户数据仪表盘项目&#xff0c;正好用React配合Ant Design实现了一套完整的界面。这种包含导航、图表和动态数据的页面在后台系统中很常见&#xff0c;记录下我的实现思路和踩坑经验。 项目结构规划 首先用create-react-app初始化项目&#xff0c;然后按功能模块…...

金蝶K3生产任务单状态查询SQL全解析:从计划到结案

1. 金蝶K3生产任务单状态查询SQL入门指南 第一次接触金蝶K3的生产任务单查询时&#xff0c;我也被那些复杂的SQL语句搞得头晕眼花。后来才发现&#xff0c;只要理解了系统设计逻辑&#xff0c;这些查询其实就像查快递单号一样简单。生产任务单在系统中会经历计划、确认、下达、…...

探索基于V2G技术的电动汽车车载充放电机Matlab仿真模型

基于V2G技术的电动汽车车载充放电机matlab仿真模型最近在研究电动汽车相关技术&#xff0c;V2G&#xff08;Vehicle-to-Grid&#xff09;技术特别吸引我。V2G技术允许电动汽车与电网进行双向能量交换&#xff0c;简单来说&#xff0c;电动汽车不仅能从电网充电&#xff0c;还能…...

终极指南:如何深度探索Alerter的10个隐藏高级功能

终极指南&#xff1a;如何深度探索Alerter的10个隐藏高级功能 【免费下载链接】Alerter Tapadoo/Alerter: 是一个简单易用的 Android 通知和进度条控件库。适合对 Android 开发、用户界面以及想要在 Android 应用中显示通知和进度条的开发者。 项目地址: https://gitcode.com…...

smart-mqtt v1.5.4发布,认证能力大升级

smart-mqtt v1.5.4正式发布&#xff0c;此次版本聚焦企业级连接认证能力升级&#xff0c;推出全新高级认证插件&#xff0c;在高性能底座上补齐企业级接入能力&#xff0c;还公布了获取方式与未来规划。版本核心亮点v1.5.4重点通过advanced-auth-plugin让连接认证更适配企业真实…...

当前主流的AI编程助手Trae、Cursor、通义灵码功能对比分析

Trae、Cursor和通义灵码是当前主流的AI编程助手&#xff0c;它们在功能定位、技术架构和使用体验上各有特色。以下是三款工具的详细对比分析&#xff1a; Trae详细操作手册和常见问题解决&#xff0c;请访问http://www.zrscsoft.com/sitepic/12166.html 一、核心功能对比 功能…...

Cursor Pro免费激活指南:3步解锁AI编程工具的完整功能

Cursor Pro免费激活指南&#xff1a;3步解锁AI编程工具的完整功能 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

别再单独部署Mosquitto了!用Docker一步搞定带MQTT插件的RabbitMQ 3.13

告别繁琐部署&#xff1a;用Docker Compose快速搭建支持MQTT的RabbitMQ集群 在物联网和微服务混合架构中&#xff0c;消息中间件选型常常让开发者陷入两难——选择轻量级的Mosquitto MQTT broker虽然能满足设备通信需求&#xff0c;却无法处理服务间的AMQP消息&#xff1b;部署…...