spring boot获取spring容器中的bean对象
我们知道如果我们要在一个类使用
spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象。如果这是spring框架的独立应用程序,我们通过
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
这样的方式就可以很轻易的获取我们所需要的对象。
但是往往我们所做的都是Web Application,这时我们启动spring容器是通过在web.xml文件中配置,这样就不适合使用上面的方式在普通类去获取对象了,因为这样做就相当于加载了两次spring容器,而我们想是否可以通过在启动web服务器的时候,就把Application放在某一个类中,我们通过这个类在获取,这样就可以在普通类获取spring bean对象了。不多说,看实例!
1.在Spring Boot可以扫描的包下
写的工具类为SpringUtil,实现ApplicationContextAware接口,并加入Component注解,让spring扫描到该bean
因为我们其实是想要的是ApplicationContext,这里就能获取Bean的管理容器
之前通过看源码,得知在Bean的初始化的过程中,有一个步骤是执行实现了Aware接口的方法
实现了对应的Aware接口,我们就能拿到对应的实例。
如果想看spring启动的源码可看如下链接
https://blog.csdn.net/qq_29235677/article/details/118458990
这里提供了3种方法,实现相关的bean的获取,
- 方法1:bean的名称
- 方法2:class字节码对象
- 方法3:bean的名字+class字节码对象
@Slf4j
@Component
public class BeanUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;/*** Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext方法** @param applicationContext*/@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {if (BeanUtils.applicationContext == null) {BeanUtils.applicationContext = applicationContext;}}//获取applicationContextpublic static ApplicationContext getApplicationContext() {return applicationContext;}//通过name获取 Bean.public static Object getBean(String name) {return getApplicationContext().getBean(name);}//通过class获取Bean.public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}//通过name,以及Clazz返回指定的Beanpublic static <T> T getBean(String name, Class<T> clazz) {return getApplicationContext().getBean(name, clazz);}}
spring boot获取spring容器中的bean对象相关推荐
- SpringBoot 之 普通类获取Spring容器中的bean
SpringBoot 之 普通类获取Spring容器中的bean 转载于:https://www.cnblogs.com/lwmp/p/8892927.html
- 【SpringBoot】在普通类中获取spring容器中的bean
这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...
- 在普通类中获取spring容器中的bean
在普通类中获取spring容器中的bean 1.工具类 package com.itheima.hchat.util;import org.springframework.beans.BeansExc ...
- 解决无法注入spring容器,获取不到spring容器中的bean问题
解决无法注入spring容器,获取不到spring容器中的bean问题 前两天工作中遇到一个问题,收到的需求是根据logbak日志实现通过过滤错误日志发送预警邮件到邮箱,logback自定义实现类如下 ...
- Spring容器中的Bean是否会被GC呢?
Spring容器中的Bean是否会被GC呢?最近好几次被校招实习生问及,对于初学者来说,这应该是一个有意思的问题,鉴于此,笔者顺便写个这个文档. 1.Spring容器中Bean的作用域 当通过Spri ...
- Spring注解驱动开发第11讲——面试官让我说说:如何使用FactoryBean向Spring容器中注册bean?
写在前面 经过前面的学习,我们知道可以通过多种方式向Spring容器中注册bean.可以使用@Configuration注解结合@Bean注解向Spring容器中注册bean:可以按照条件向Sprin ...
- Spring注解驱动开发第7讲——如何按照条件向Spring容器中注册bean?这次我懂了!!
写在前面 当bean是单实例,并且没有设置懒加载时,Spring容器启动时,就会实例化bean,并将bean注册到IOC容器中,以后每次从IOC容器中获取bean时,直接返回IOC容器中的bean,而 ...
- Servlet自动注入Spring容器中的Bean解决方法
Servlet自动注入Spring容器中的Bean解决方法 参考文章: (1)Servlet自动注入Spring容器中的Bean解决方法 (2)https://www.cnblogs.com/jank ...
- Spring注解驱动开发第10讲——在@Import注解中使用ImportBeanDefinitionRegistrar向容器中注册bean
写在前面 在前面的文章中,我们学习了如何使用@Import注解向Spring容器中导入bean,不仅可以使用@Import注解快速向容器中导入bean,也可以在@Import注解中使用ImportSe ...
最新文章
- yum安装nginx
- android nfcDemo
- Java-Web 监听器和过滤器
- 关于人类肉眼识别模式的简单想法
- Python文件与目录操作
- BP: 通过SAP name拿到central person id
- PL/SQL编程基本概念
- vscode 新建python 终端
- 算法导论4--求最大和数组
- IntelliJ IDEA中使用git
- 怎么对ChannelHandler做测试?
- 基于衰减因子和动态学习的改进樽海鞘群算法
- 虚拟机无法服务器系统安装win7系统,如何解决虚拟机安装Win7系统失败的问题
- 一招教你表格里面给方框内打勾
- 190种超全的解密工具任你选!!
- 如何理解GPO版本号
- JS中数组splice、slice和字符串slice、split的混淆
- 《途客圈创业记:不疯魔,不成活》一一1.4 合伙组建公司
- 【纪中受难记】——Day21:调整心态
- “字面量”和“符号引用”