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 ...
随机推荐
- 学习笔记-安装kafka集群
官网地址:https://kafka.apache.org/ 1.下载解压 #下载 wget https://mirror.bit.edu.cn/apache/kafka/2.6.0/kafka_2. ...
- modelsim的工程文件结构
modelsim的工程文件结构 1.工程结构 modelsim中的工程包括一个库(这个库可以是空的,也可以包含器件延时信息的真实库),一个工程(以mpf为后缀的文件是工程的快捷打开方式)和若干源文件. ...
- UE4Gameplay定时器
参考 定时器在全局定时器管理器(FTimerManager类)中管理,对于每个实例Uobject和场景都会有全局定时器管理器,一般来说通过SetTimer和SetTimerForNextTick来设置 ...
- Scala 函数至简原则
(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值(2)如果函数体只有一行代码,可以省略花括号(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)(4) ...
- QImage 与 Mat 互转
QImage 转 Mat Mat QImage2Mat(QImage &img) { cv::Mat mat; switch (img.format()) { case QImage::For ...
- 1、android Studio 打Jar包
1.创建一个AndroidStudio 工程 注意下面这个Package Name 2.进入Android Studio工程中 选择Project Flies 选项 然后找到 app->src- ...
- k8s 深入篇———— pod 实战[六]
前言 pod 实战一下,主要是一些例子. 正文 例子一 pod 实例的选择: NodeSelector:是一个供用户将 Pod 与 Node 进行绑定的字段 NodeName:一旦 Pod 的这个字段 ...
- linux 性能自我学习 ———— cpu 高怎么办 [三]
前言 linux 性能分析自我学习. 正文 一般我们说cpu,一般是什么高呢? 一般是指cpu 使用率高. 那么什么是cpu 使用率呢? cpu 使用率 = 1- 空闲时间/总cpu 时间 平均cpu ...
- 【Oracle笔记】递归以及索引的一丢丢使用
[笔记]递归以及索引的一丢丢使用 递归写法,树查询 connect by nocycle prior START WITH XXX CONNECT BY PRIOR XXX ORDER BY XXX ...
- 第 9章 数据分析案例:Python 岗位行情
第 9章 数据分析案例:Python 岗位行情 9.1 数据爬取 (1)打开某招聘网站首页 https://www.lagou.com,选择"全国站",在搜索栏输入 Python, ...