我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,自己动手new的对象,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象;

虽然通过

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");ac.getBean("beanId")

方式加载xml文件来获取上下文环境获得bean,但由于在web application中,spring是通过web.xml加载配置的,所有会加载两次spring容器,同时在spring boot中一般是无xml配置的,所以需要其他方式了;

1.通过实现 ApplicationContextAware接口 定义一个SpringUtil工具类,实现ApplicationContextAware接口

 1 public class SpringUtil implements ApplicationContextAware {
 2 private static ApplicationContext applicationContext;
 3
 4     @Override
 5     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 6         if(SpringUtil.applicationContext == null) {
 7             SpringUtil.applicationContext = applicationContext;
 8         }
 9     }
10
11     //获取applicationContext
12     public static ApplicationContext getApplicationContext() {
13         return applicationContext;
14     }
15
16     //通过name获取 Bean.
17     public static Object getBean(String name){
18         return getApplicationContext().getBean(name);
19     }
20
21     //通过class获取Bean.
22     public static T getBean(Class clazz){
23         return getApplicationContext().getBean(clazz);
24     }
25
26     //通过name,以及Clazz返回指定的Bean
27     public static T getBean(String name,Class clazz){
28         return getApplicationContext().getBean(name, clazz);
29     }
30 }    

转载于:https://www.cnblogs.com/canda/p/7835790.html

Spring Boot中普通类获取Spring容器中的Bean相关推荐

  1. spring@Autowired的对象为null,非容器中的类如何调用容器中的类

    1.问题描述 我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent.@Controller.@Service .@repository等注解才可以.注入类和被注入类都被s ...

  2. Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)

    继承ApplicationContextAware获取ApplicationContext: package com.xxxx.xxxx.bean;import org.springframework ...

  3. Spring Boot笔记-logback-spring.xml获取application.properties中的变量

    logback.xml的加载顺序早于springboot的application.yml (或application.properties) 配置文件当然读不到application.yml(或app ...

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

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

  5. 【Spring】普通类获取Spring容器的bean的方法

    我们通常在项目中获取Spring容器里bean的方式,一般是使用注解的方式(@Autowired.@Resource)直接注入就可以直接使用了,那么如果在一个普通的类里(其他地方使用它的实例是以new ...

  6. Spring boot的配置类

    @Configuration 指明当前类是一个配置类 来替代之前的Spring配置文件 Spring boot的配置类 相当于Spring的配置文件 容器添加组件 Spring,通过配置文件添加组件 ...

  7. 访问指定html页面,Spring boot的Controller类是如何指定HTML页面的

    Spring boot的Controller类是指定HTML页面的实现的方法如下: 1.在spring boot中借鉴servlet的方法输出html: @RequestMapping(value=& ...

  8. 在Spring Boot里面,怎么获取定义在application.properties文件里的值

    问题:在Spring Boot里面,怎么获取定义在application.properties文件里的值. 我想访问application.properties里面提供的值,像这样: logging. ...

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

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

最新文章

  1. NSArray 过滤
  2. mats显卡测试软件的使用教程,MATS使用说明
  3. 整数划分问题【递归以及递推求解方式】
  4. Java虚拟机字节码指令概述
  5. Javascript事件委托
  6. python field readonly_Python serializers.ReadOnlyField方法代码示例
  7. 【转】王晟教授:给光纤3室研究生的一封公开信
  8. Android秒级编译方案-FreeLine
  9. [leetcode] 72.编辑距离
  10. 将检索出来的列按逗号拼接起来
  11. Python多线程好文
  12. Idea添加Jetty时提示JMX module is not included
  13. biztalk中架构验证、实例生成和验证
  14. Taobao 的 Linux 内核开源贡献
  15. 3DMAX 创建选择集
  16. Java Date总结
  17. archlinux 安装xorg
  18. java 编译器原理_作业5:Java编译原理
  19. python入门三剑客怎么样_python三剑客
  20. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un分析

热门文章

  1. 基于EEG的癫痫自动检测: 综述与展望
  2. 统计学习方法笔记(二)-kd树原理及python实现
  3. mysql 中lock wait_应用中MYSQL 报错Lock wait timeout exceeded; try restarting transaction
  4. 业务数据全用上也喂不饱AI?试试这个小样本学习工具包
  5. 谷歌Colab也搞“超级会员”,普通会员云GPU被降级,想用高端得加钱
  6. 42岁著名黑客去世,曾拯救互联网:揭开索尼“罪行”、发现DNS漏洞
  7. C/C++难题的高赞回答「中文版」,帮你整理好了
  8. 谷歌“升维打击”:还原任意角度光照立体效果,2D变“4D”!
  9. 一场实验室意外爆炸事故,解决了58年量子难题,让科学家意外发现“核电共振”...
  10. MIT人工智能独立设系!拆分EECS为EE、CS、AI+决策三部分,直接归学院管理