Spring Boot中普通类获取Spring容器中的Bean
我们知道如果我们要在一个类使用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相关推荐
- spring@Autowired的对象为null,非容器中的类如何调用容器中的类
1.问题描述 我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent.@Controller.@Service .@repository等注解才可以.注入类和被注入类都被s ...
- Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)
继承ApplicationContextAware获取ApplicationContext: package com.xxxx.xxxx.bean;import org.springframework ...
- Spring Boot笔记-logback-spring.xml获取application.properties中的变量
logback.xml的加载顺序早于springboot的application.yml (或application.properties) 配置文件当然读不到application.yml(或app ...
- SpringBoot 之 普通类获取Spring容器中的bean
SpringBoot 之 普通类获取Spring容器中的bean 转载于:https://www.cnblogs.com/lwmp/p/8892927.html
- 【Spring】普通类获取Spring容器的bean的方法
我们通常在项目中获取Spring容器里bean的方式,一般是使用注解的方式(@Autowired.@Resource)直接注入就可以直接使用了,那么如果在一个普通的类里(其他地方使用它的实例是以new ...
- Spring boot的配置类
@Configuration 指明当前类是一个配置类 来替代之前的Spring配置文件 Spring boot的配置类 相当于Spring的配置文件 容器添加组件 Spring,通过配置文件添加组件 ...
- 访问指定html页面,Spring boot的Controller类是如何指定HTML页面的
Spring boot的Controller类是指定HTML页面的实现的方法如下: 1.在spring boot中借鉴servlet的方法输出html: @RequestMapping(value=& ...
- 在Spring Boot里面,怎么获取定义在application.properties文件里的值
问题:在Spring Boot里面,怎么获取定义在application.properties文件里的值. 我想访问application.properties里面提供的值,像这样: logging. ...
- Java普通类获取Spring框架Bean 的五种方法
方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContex(" ...
最新文章
- NSArray 过滤
- mats显卡测试软件的使用教程,MATS使用说明
- 整数划分问题【递归以及递推求解方式】
- Java虚拟机字节码指令概述
- Javascript事件委托
- python field readonly_Python serializers.ReadOnlyField方法代码示例
- 【转】王晟教授:给光纤3室研究生的一封公开信
- Android秒级编译方案-FreeLine
- [leetcode] 72.编辑距离
- 将检索出来的列按逗号拼接起来
- Python多线程好文
- Idea添加Jetty时提示JMX module is not included
- biztalk中架构验证、实例生成和验证
- Taobao 的 Linux 内核开源贡献
- 3DMAX 创建选择集
- Java Date总结
- archlinux 安装xorg
- java 编译器原理_作业5:Java编译原理
- python入门三剑客怎么样_python三剑客
- Linux网络编程之sockaddr与sockaddr_in,sockaddr_un分析
热门文章
- 基于EEG的癫痫自动检测: 综述与展望
- 统计学习方法笔记(二)-kd树原理及python实现
- mysql 中lock wait_应用中MYSQL 报错Lock wait timeout exceeded; try restarting transaction
- 业务数据全用上也喂不饱AI?试试这个小样本学习工具包
- 谷歌Colab也搞“超级会员”,普通会员云GPU被降级,想用高端得加钱
- 42岁著名黑客去世,曾拯救互联网:揭开索尼“罪行”、发现DNS漏洞
- C/C++难题的高赞回答「中文版」,帮你整理好了
- 谷歌“升维打击”:还原任意角度光照立体效果,2D变“4D”!
- 一场实验室意外爆炸事故,解决了58年量子难题,让科学家意外发现“核电共振”...
- MIT人工智能独立设系!拆分EECS为EE、CS、AI+决策三部分,直接归学院管理