在项目中,我们可能需要手动获取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对象的三种方式相关推荐

  1. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

  2. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  3. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  4. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  5. JS-01-在HTML中嵌入JavaScript代码的三种方式

    JS-01-在HTML中嵌入JavaScript代码的三种方式 1.JavaScript概述 Web的组成有HTML.CSS还有即将要学习的JavaScript(简称JS). CSS和JS主要是服务于 ...

  6. 在HTML 中嵌入 JS 代码的三种方式

    一,在HTML中嵌入JS代码的第一种方式:行间事件 行间事件是指将JavaScript函数写到HTML元素中的执行事件. 1.JavaScript 是一种事件驱动型的编程语言,通常都是在发生某个事件的 ...

  7. JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量

    文章目录 JavaScript 01 关于JavaScript 1.1 JS的发展历史 1.2 JS的特性 1.3 JS的组成 1.4 JSP和JS的区别 02 在HTML中嵌入JS代码的三种方式 2 ...

  8. 详解C#实例化对象的三种方式及性能对比

    前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...

  9. 获取Class对象的三种方式

    获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...

最新文章

  1. 没有域可以加文件服务器吗,文件服务器没有域
  2. 多年经验的程序员迷失了自己,该怎么办?
  3. linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz
  4. 腾讯视频如何编辑自我介绍
  5. 炫酷大屏demo_那些炫酷高端的可视化大屏,是如何开发出来的?
  6. 一文读懂约瑟夫环算法 | 原力计划
  7. 跟我一起学extjs5(22--模块Form的自己定义的设计)
  8. UML基础: 统一建模语言简介
  9. 【声源定位】基于matlab阵列流形矩阵信号显示【含Matlab源码 549期】
  10. PHP ZipArchive 实现压缩解压Zip文件
  11. Artnet对话孙宇晨:做自己的偶像
  12. 3万字报告拆解:硅谷寒冬,投资人还在哪些赛道烧钱?|我在硅谷看未来
  13. HttpServletRequest对象,请求行、请求头、请求体
  14. 微信好友头像全家福详细教程
  15. vulnhub:THOTH TECH:1靶机
  16. python程序运行结果不停_关于python:在进程运行时不断打印Subprocess输出
  17. Linux 研发环境工具 下载网址大全
  18. 饥荒mod制作学习(2)
  19. Symbian 的缺陷(一)
  20. tomcat查看日志

热门文章

  1. array.slice_Ruby中带有示例的Array.slice()方法
  2. inputstream示例_Java InputStream close()方法与示例
  3. java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例
  4. c#如何嵌套第三方程序_C#程序演示嵌套条件运算符的示例
  5. 20 图|Nacos 手摸手教程
  6. Oracle-(if/case/以及模拟注册登录)练习-20131015
  7. 关于怎么获取jsp的web站点的目录问题
  8. zoj 1091 Knight Moves
  9. CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动
  10. C#中 out、ref、params 修饰符使用方法