我们通常在项目中获取Spring容器里bean的方式,一般是使用注解的方式(@Autowired、@Resource)直接注入就可以直接使用了,那么如果在一个普通的类里(其他地方使用它的实例是以new的方式使用的),此时再用注解的方式注入的将会是null,那这种情况下,我们该如何使用Spring容器里的bean呢?本篇博客讲解五种方法,接下来就依次详细讲一下使用方式

一、在初始化时保存ApplicationContext对象

FileSystemXmlApplicationContext fileSystemXmlApplicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");
// 1、使用类名获取
XXX xxx = SpringContextService.getBean(XXX.class);
// 2、使用bean名获取
Object yyy = SpringContextService.getBean("beanName");

二、通过Spring提供的工具类获取ApplicationContext对象

WebApplicationContext requiredWebApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
// 1、使用类名获取
XXX xxx = SpringContextService.getBean(XXX.class);
// 2、使用bean名获取
Object yyy = SpringContextService.getBean("beanName");

三、继承自抽象类ApplicationObjectSupport

public class SpringTest extends ApplicationObjectSupport {private void test(){// 1、使用类名获取XXX xxx = getApplicationContext().getBean(XXX.class);// 2、使用bean名获取Object yyy = getApplicationContext().getBean("beanName");}
}

四、继承自抽象类WebApplicationObjectSupport

```java
public class SpringTest extends WebApplicationObjectSupport{private void test(){// 1、使用类名获取XXX xxx = getApplicationContext().getBean(XXX.class);// 2、使用bean名获取Object yyy = getApplicationContext().getBean("beanName");}
}

五、实现接口ApplicationContextAware

实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。
Spring初始化时,会通过该方法将ApplicationContext对象注入
1、添加一个类,实现ApplicationContextAware

@Component
public class SpringContextService implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if (SpringContextService.applicationContext == null) {SpringContextService.applicationContext = applicationContext;}}public static <T> T getBean(Class<T> clazz) {return applicationContext.getBean(clazz);}public static Object getBean(String beanName) {return applicationContext.getBean(beanName);}
}

2、普通类的实际使用

// 1、使用类名获取
XXX xxx = SpringContextService.getBean(XXX.class);
// 2、使用bean名获取
Object yyy = SpringContextService.getBean("beanName");

以上就是普通类获取Spring容器的bean的几种方法,感谢您的阅读!

【Spring】普通类获取Spring容器的bean的方法相关推荐

  1. SpringBoot 之 普通类获取Spring容器中的bean

    SpringBoot 之 普通类获取Spring容器中的bean 转载于:https://www.cnblogs.com/lwmp/p/8892927.html

  2. java spring获取bean_普通Java类获取Spring的Bean的方法

    普通Java类获取Spring的Bean的方法 在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方 ...

  3. Spring @Autowired 调用别的包下的Bean 解决方法

    Spring @Autowired 调用别的包下的Bean 解决方法 参考文章: (1)Spring @Autowired 调用别的包下的Bean 解决方法 (2)https://www.cnblog ...

  4. Spring Boot中普通类获取Spring容器中的Bean

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,自己动手n ...

  5. Java普通类获取Spring框架Bean 的五种方法

    方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContex(" ...

  6. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  7. Spring揭秘1:IOC容器、bean的生命周期

    1 依赖注入 在IoC模式中,被注入对象又是通过哪些方式来通知IoC Service Provider为其提供适当服务的呢?----依赖注入方式 构造方法注入 setter方法注入 接口注入 1.1 ...

  8. 惊呆了,Spring中竟然有12种定义bean的方法

    前言 在庞大的 Java 技术体系中,Spring 有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜. 我们都知道 Spring 是创建和管理bean的工厂,它提供了多种方式定义 bean,能 ...

  9. 普通Java类获取Spring的bean

    在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方法.例如: ApplicationContext ...

最新文章

  1. CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
  2. 推荐10个能带来快感的实用windows软件,好评如潮!
  3. VC++ 2012 单元测试入门
  4. 压缩感知进阶——有关稀疏矩阵
  5. 计算机行业常见英语,计算机行业常用英语词汇
  6. ESX 4 无法启动vSphere Web Access
  7. 微软西雅图总部DevOps交流总结
  8. 一份关于如何为回归任务选择机器学习算法指南
  9. [原]用三行代码实现对音量的控制,实现增大,减小,静音
  10. 【韦东山嵌入式Linux】Linux命令入门笔记
  11. Spire.Doc 教程:如何将Word转换为PDF
  12. 解决报错:Source does not fit in dest 异常
  13. python爬取某音乐歌词,将内容保存制作词云图
  14. 点击按钮显示和隐藏图片
  15. android 8 奕骆,这才是超级手机 奕骆6000mAh称霸全球 USB Type-C
  16. 复数基础——复数的基本运算_2
  17. 电脑版微信小程序全屏显示方法,手机横屏方法。
  18. 将 MobaXterm 的高亮/突出显示集功能(HighLight sets)移植到 Xshell 中使用
  19. 微信支付 通知 java_java之微信支付通知
  20. C++最小二乘拟合 (高阶最小二乘拟合)

热门文章

  1. UICollectionView简单使用
  2. java递归把list菜单列表转为菜单树
  3. Excel数据分析常用函数④——日期函数(now,today,datedif,weekday,weeknum,text)
  4. 2015 ACM Arabella Collegiate Programming Contest(F题)
  5. 【PCDN】2020架构: 提高穿透和分享、BGP协议
  6. HJ70 矩阵乘法计算量估算 ——
  7. js组件化、模块化开发
  8. 堡垒机的主要功能是什么?为什么需要堡垒机?
  9. Android项目:基于Android的手机音乐播放器的设计
  10. 第一章:第一节数据载入及初步观察-课程