SpringBoot获取Bean的工具类
1、beanName
- 默认是类名首字母小写
下面的类:beanName = bean1
@Component
public class Bean1 {
public String getBean1() {
return "Bean1";
}
}
- 修改beanName
下面的类:beanName = bean2New
@Component("bean2New")
public class Bean2 {
public String getBean2() {
return "Bean2";
}
}
2、工具类
package com.cc.eed.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
/**
* <p>获取spring的bean的工具类</p>
*
* @author CC
* @since 2023/10/12
*/
@Component
public class SpringBeanUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringBeanUtil.applicationContext = applicationContext;
}
/** <p>根据类的clazz获取<p>
* @param clazz clazz
* @return {@link T}
* @since 2023/10/12
* @author CC
**/
public static <T> T getBean(Class<T> clazz) {
T t = applicationContext != null ? applicationContext.getBean(clazz) : null;
Assert.notNull(t, "当前Bean为空,请重新选择!");
return t;
}
/** <p>根据Bean名字获取<p>
* @param clazzName bean名字
* @return {@link Object}
* @since 2023/10/12
* @author CC
**/
public static Object getBean(String clazzName) {
return applicationContext.getBean(clazzName);
}
}
3、使用
@Test
public void test01()throws Exception{
//方式一:根据类的clazz获取
Bean1 bean = SpringBeanUtil.getBean(Bean1.class);
System.out.println(bean.getBean1());
Bean2 bean2 = SpringBeanUtil.getBean(Bean2.class);
System.out.println(bean2.getBean2());
//方式二:根据bean名字获取
Bean1 bean11 = (Bean1) SpringBeanUtil.getBean("bean1");
System.out.println(bean11.getBean1());
//报错:NoSuchBeanDefinitionException
Bean2 bean22 = (Bean2) SpringBeanUtil.getBean("bean2");
//正确
Bean2 bean222 = (Bean2) SpringBeanUtil.getBean("bean2New");
System.out.println(bean222.getBean2());
}
SpringBoot获取Bean的工具类的更多相关文章
- Spring获取bean的工具类
package com.tech.jin.util; import org.springframework.context.ApplicationContext; import org.springf ...
- 可以随时拿取spring容器中Bean的工具类
前言 在Spring帮我们管理bean后,编写一些工具类的时候需要从容器中拿到一些对象来做一些操作,比如字典缓存工具类,在没有找到字典缓存时,需要dao对象从数据库load一次,再次存入缓存中.此时需 ...
- Spring MVC模式下,获取WebApplicationContext的工具类 方法
在已有的注解类型下,获取WebApplicationContext的工具类 通过 WebApplicationContextUtils.getRequiredWebApplicationContex ...
- [性能] Bean拷贝工具类性能比较
Bean拷贝工具类性能比较 引言 几年前做过一个项目,接入新的api接口.为了和api实现解耦,决定将api返回的实体类在本地也建一个.这样做有两个好处 可以在api变更字段的时候保持应用稳定性 可以 ...
- android 获取手机信息工具类
package com.yqy.yqy_listviewheadview; import android.content.Context; import android.telephony.Telep ...
- springboot封装JsonUtil,CookieUtil工具类
springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...
- 工具类分享之获取Request/Response工具类《RequestContextHolderUtil》
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aiyaya_/article/details/78975893前言在开发spring web项目时, ...
- 获取Spring容器Bean对象工具类
在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.因此就写了这个工具类,在此记录一下,方便后续查阅. ...
- SpringBoot集成Mybatis-PageHelper分页工具类,实现3步完成分页
在Mybatis中,如果想实现分页是比较麻烦的,首先需要先查询出总的条数,然后再修改mapper.xml,为sql添加limit指令. 幸运的是现在已经不需要这么麻烦了,刘大牛实现了一个超牛的分页工具 ...
- 就因为加了Lombok的@Accessors(chain = true),bean拷贝工具类不干活了
前言 这次新建了一个工程,因为 Lombok 用得很习惯,但以前的话,一般只用了@Data,@AllArgsConstructor,@EqualsAndHashCode等常规注解:那这个Accesso ...
随机推荐
- SpringBoot3集成PostgreSQL
标签:PostgreSQL.Druid.Mybatis.Plus: 一.简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以运行在所有主流操作系统上, ...
- LOTO示波器_从零开始手把手测电源开环增益/电源环路频响曲线/PSM
我们之前有篇文章从理论到实践演示了如何测量电源环路的开环增益曲线,不过偏重于理论和原理,没有很多细节的展现,所以这片文章从另外的角度,从零基础开始,手把手一步一步演示如果进行实操测试. 之前的那篇文章 ...
- koa2整合mysql
引入mysql包 npm install mysql 封装mysql 创建mysql.js文件放在utils(工具包)中 使用pool连接池 mysql.js //封装mysql const mysq ...
- 镭速Raysync v6.6.8.0版本发布
最近镭速发布了v6.6.8.0版本,已经发布上线了.主要更新内容有服务器下发任务支持指定客户端,客户端增加日志清理和日志压缩,自动删除源文件保持源目录结构,支持将文件投递给其他成员等功能,详细的更新内 ...
- UE4 c++ -- 简单的UMG
说明 学习一下如何将Widget蓝图与C++连接起来,将处理逻辑写在C++中 基础 在蓝图中,我们显示Widget是通过一个Actor或者PlayerController,甚至关卡蓝图,利用Creat ...
- pymysql连接、关闭、查询,python如何操作mysql数据库
1 def get_conn(): 2 """ 3 :return: 连接,游标 4 """ 5 # 创建连接 6 conn = pymys ...
- .NET Emit 入门教程:第六部分:IL 指令:3:详解 ILGenerator 指令方法:参数加载指令
前言: 在上一篇中,我们介绍了 ILGenerator 辅助方法. 本篇,将详细介绍指令方法,并详细介绍指令的相关用法. 在接下来的教程,关于IL指令部分,会将指令分为以下几个分类进行讲解: 1.参数 ...
- #树形dp#nssl 1469 W
分析 首先一些结论,每条边最多被翻一次,而且由翻的边所构成的连通块答案就是度数为奇数的点的个数的一半, 因为在连通块内必然选择两个叶子节点间的路径翻是最优的,所以也就是选择两个度数为奇数的点,所以结论 ...
- Git安装和配置教程:Windows/Mac/Linux三平台详细图文教程,带你一次性搞定Git环境
Git是一款免费.开源的分布式版本控制系统,广泛应用于软件开发领域.随着开源和云计算的发展,Git已经成为了开发者必备的工具之一.本文将为大家介绍Git在Windows.Mac和Linux三个平台上的 ...
- DevEco Studio 3.1 Beta新特性知多少
原文链接:https://mp.weixin.qq.com/s/HYdNlKKA9Z51dfI1bcplDA,点击链接查看更多技术内容: DevEco Studio 3.1 Beta新特性知多少原文 ...