博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 普通类获取Spring容器中的bean
阅读量:6898 次
发布时间:2019-06-27

本文共 2337 字,大约阅读时间需要 7 分钟。

  hot3.png

我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象。如果这是spring框架的独立应用程序,我们通过

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

ac.getBean("beanId"); 

这样的方式就可以很轻易的获取我们所需要的对象。

但是往往我们所做的都是Web Application,这时我们启动spring容器是通过在web.xml文件中配置,这样就不适合使用上面的方式在普通类去获取对象了,因为这样做就相当于加载了两次spring容器,而我们想是否可以通过在启动web服务器的时候,就把Application放在某一个类中,我们通过这个类在获取,这样就可以在普通类获取spring bean对象了。

本文档介绍在springboot中普通类是如何获取Spring容器中的bean。其实很简单,只需要在项目中添加一个工具类,我这里创建的工具类名称为SpringBootBeanUtil 实现ApplicationContextAware接口,并加入Component注解,让springboot扫描到该bean,就可以通过工具类中的四个静态方法获取到ApplicationContext或直接获取到Spring管理的类。

package org.lvgang;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * SpringBoot 普通类获取Spring容器中的bean工具类 * @author lvgang */@Componentpublic class SpringBootBeanUtil implements ApplicationContextAware {	private static ApplicationContext applicationContext;	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {		if (SpringBootBeanUtil.applicationContext == null) {			SpringBootBeanUtil.applicationContext = applicationContext;		}		System.out.println("========ApplicationContext配置成功========");		System.out.println("========在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象========");		System.out.println("========applicationContext="+ SpringBootBeanUtil.applicationContext +"========");	}	/**	 * 获取applicationContext	 * @return	 */	public static ApplicationContext getApplicationContext() {		return applicationContext;	}	/**	 * 通过name获取 Bean.	 * @param name	 * @return	 */	public static Object getBean(String name) {		return getApplicationContext().getBean(name);	}	/**	 * 通过class获取Bean.	 * @param clazz	 * @return	 */	public static 
T getBean(Class
clazz) { return getApplicationContext().getBean(clazz); } /** * 通过name,以及Clazz返回指定的Bean * @param name * @param clazz * @return */ public static
T getBean(String name, Class
clazz) { return getApplicationContext().getBean(name, clazz); }}

 

转载于:https://my.oschina.net/sdlvzg/blog/1590952

你可能感兴趣的文章
U盘自动运行文件
查看>>
如何使用第三方DNS解析
查看>>
git clone 出现Cannot allocate memory
查看>>
我的友情链接
查看>>
网页中控件查找
查看>>
hp rx4640 system亮闪解决办法!
查看>>
nginx中文件路径表示方法
查看>>
我的友情链接
查看>>
Solr
查看>>
Map.HashMap
查看>>
dependencies.dependency.version' for org.hibernate:hibernate-validator:jar is missing.
查看>>
centos下screen的使用
查看>>
为什么Google急着杀死加密算法SHA-1
查看>>
使用VMware Workstation 10.0安装虚拟机
查看>>
使用 cgo 调用 C 代码
查看>>
1763.传球游戏
查看>>
博客起点
查看>>
java clone
查看>>
光线凭借《左耳》胜出五一档后,又要拉上奇虎360整大事?
查看>>
颠覆想象——vivo Xplay5人性化体验揭秘
查看>>