SpringBoot中注入ApplicationContext对象的三种方式
在项目中,我们可能需要手动获取spring中的bean对象,这时就需要通过 ApplicationContext 去操作一波了!
1、直接注入(Autowired)
@Component
public class User {@Autowiredprivate ApplicationContext applicationContext;
}
2、构造器方法注入
@Component
public class User{private ApplicationContext applicationContext;public User(ApplicationContext applicationContext) {this.applicationContext = applicationContext;}
}
3、手动构建类实现接口
/*** Spring的ApplicationContext的持有者,可以用静态方法的方式获取spring容器中的bean** @date 2018年5月27日 下午6:32:11*/
@Component
public class SpringContextHolder implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextHolder.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext() {assertApplicationContext();return applicationContext;}@SuppressWarnings("unchecked")public static <T> T getBean(String beanName) {assertApplicationContext();return (T) applicationContext.getBean(beanName);}public static <T> T getBean(Class<T> requiredType) {assertApplicationContext();return applicationContext.getBean(requiredType);}private static void assertApplicationContext() {if (SpringContextHolder.applicationContext == null) {throw new RuntimeException("applicaitonContext属性为null,请检查是否注入了SpringContextHolder!");}}
}
注:在使用该类静态方法时必须保证spring加载顺序正确!
可以在使用类上添加 @DependsOn(“springContextHolder”),确保在此之前 SpringContextHolder 类已加载!
SpringBoot中注入ApplicationContext对象的三种方式相关推荐
- java class 生成对象_Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...
- .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...
这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...
- java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)
Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...
- java反射获取实体类_java 反射获取类对象的三种方式
Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...
- JS-01-在HTML中嵌入JavaScript代码的三种方式
JS-01-在HTML中嵌入JavaScript代码的三种方式 1.JavaScript概述 Web的组成有HTML.CSS还有即将要学习的JavaScript(简称JS). CSS和JS主要是服务于 ...
- 在HTML 中嵌入 JS 代码的三种方式
一,在HTML中嵌入JS代码的第一种方式:行间事件 行间事件是指将JavaScript函数写到HTML元素中的执行事件. 1.JavaScript 是一种事件驱动型的编程语言,通常都是在发生某个事件的 ...
- JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量
文章目录 JavaScript 01 关于JavaScript 1.1 JS的发展历史 1.2 JS的特性 1.3 JS的组成 1.4 JSP和JS的区别 02 在HTML中嵌入JS代码的三种方式 2 ...
- 详解C#实例化对象的三种方式及性能对比
前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...
- 获取Class对象的三种方式
获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...
最新文章
- 没有域可以加文件服务器吗,文件服务器没有域
- 多年经验的程序员迷失了自己,该怎么办?
- linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz
- 腾讯视频如何编辑自我介绍
- 炫酷大屏demo_那些炫酷高端的可视化大屏,是如何开发出来的?
- 一文读懂约瑟夫环算法 | 原力计划
- 跟我一起学extjs5(22--模块Form的自己定义的设计)
- UML基础: 统一建模语言简介
- 【声源定位】基于matlab阵列流形矩阵信号显示【含Matlab源码 549期】
- PHP ZipArchive 实现压缩解压Zip文件
- Artnet对话孙宇晨:做自己的偶像
- 3万字报告拆解:硅谷寒冬,投资人还在哪些赛道烧钱?|我在硅谷看未来
- HttpServletRequest对象,请求行、请求头、请求体
- 微信好友头像全家福详细教程
- vulnhub:THOTH TECH:1靶机
- python程序运行结果不停_关于python:在进程运行时不断打印Subprocess输出
- Linux 研发环境工具 下载网址大全
- 饥荒mod制作学习(2)
- Symbian 的缺陷(一)
- tomcat查看日志
热门文章
- array.slice_Ruby中带有示例的Array.slice()方法
- inputstream示例_Java InputStream close()方法与示例
- java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例
- c#如何嵌套第三方程序_C#程序演示嵌套条件运算符的示例
- 20 图|Nacos 手摸手教程
- Oracle-(if/case/以及模拟注册登录)练习-20131015
- 关于怎么获取jsp的web站点的目录问题
- zoj 1091 Knight Moves
- CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动
- C#中 out、ref、params 修饰符使用方法