获取Spring容器Bean对象工具类

在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题。为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean。因此就写了这个工具类,在此记录一下,方便后续查阅。废话不多说,直接上代码。

一、代码

  1. package com.zxy.demo.spring;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.ApplicationContextAware;
  5. import org.springframework.stereotype.Component;
  6. /**
  7. * 获取Spring容器中bean工具类
  8. * @author ZENG.XIAO.YAN
  9. * @date 2018年6月6日
  10. *
  11. */
  12. @Component("springContextUtils")
  13. public class SpringContextUtils implements ApplicationContextAware {
  14. private static ApplicationContext applicationContext = null;
  15. public static ApplicationContext getApplicationContext() {
  16. return applicationContext;
  17. }
  18. @SuppressWarnings("unchecked")
  19. public static <T> T getBean(String beanId) {
  20. return (T) applicationContext.getBean(beanId);
  21. }
  22. public static <T> T getBean(Class<T> requiredType) {
  23. return (T) applicationContext.getBean(requiredType);
  24. }
  25. /**
  26. * Spring容器启动后,会把 applicationContext 给自动注入进来,然后我们把 applicationContext 赋值到静态变量中,方便后续拿到容器对象
  27. * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
  28. */
  29. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  30. SpringContextUtils.applicationContext = applicationContext;
  31. }
  32. }

二、用法

直接在代码用调用SpringContextUtils静态方法获取bean就ok,可以通过bean的id获取,也可以通过bean的类型获取

  1. RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);

三、注意事项

仔细看代码可以发现我这个工具类上面加了个@Component注解。加这个注解的目的是为了把的SpringContextUtils的实例化交给Spring容器管理。当然,你也可以在xml中配置这个,我为了方便,直接用的注解。注意点:这个工具类的实例化必须由Spring容器来做

原文地址:https://www.cnblogs.com/zeng1994/p/cf6f754e69da87a46f449aee93dca9d9.html

时间: 2024-10-12 20:12:43

获取Spring容器Bean对象工具类的相关文章

普通java类获取spring容器bean的方法

很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成.无需自己写链接..有时候有些好的东西,拿到用就好了. 这里是多种方式中的一种. 通过实现ApplicationContextAware获取bean.这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为 private static ApplicationContext

获取Spring管理bean对象

package com.sinosoft.base.util; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.Applica

获取spring容器对象方法和原因

为什么要获取Spring容器对象:拿到spring容器对象后,你就可以用spring管理的bean了,拿到bean,自然可以使用bean的方法,场景:比如jsp页面.通过注解是无法注入bean的,在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.spring提供了一个工具类WebApplicationContextUtils,就可以拿到了 样例:比如我们项目的代码,在jsp中: 原文地址:http

static关键字,引发的spring普通类获取spring的bean的思考

在c++和java中static关键字用于修饰静态成员变量和成员函数 举例一个普通的javabean class AA { int a; static int b; geta/seta;//此处省略getset getb/setb; } 如果创建了一个对象AA, AA a =new AA(); 这个时候只会在内存中给这个对象分配四个字节,也就是a变量所占的字节数,因为static申明的全局变量在全局区中,是所有这个类的对象共有的,例如: a.setB(10); AA b =new A(); Sy

Spring容器,Bean配置信息,Bean实现类以及应用程序四者的相互关系(看书随笔)

Spring容器,Bean配置信息,Bean实现类以及应用程序四者的相互关系图: Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载\实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应用程序调用.

获取Spring容器

方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 方法二:通过Spring提供的工具类获取ApplicationContext对象 import org.springframework.web.context.support.WebApp

spring创建Bean对象的控制

1.spring创建Bean对象的控制 a.控制对象创建方式(使用范围),在<bean>元素中使用scope属性控制,scope可以支持singleton或prototype,默认值是singleton <bean scope= "singleton"> 该组件在spring容器里只有一个bean对象.每次取出的bean都是同一个bean,相当于单例模式 <bean scope = "prototype">该组件每次使用getBe

spring-让bean获取spring容器

1.如上一篇文章所述,有时候bean想发布一些容器事件,就需要先获取spring容器,然后将Event交由spring容器将事件发布出去. 为了让bean获取它所在的spring容器,可以让该bean实现BeanFactoryAware接口,BeanFactoryAware接口只有一个方法.  setBeanFactory(BeanFactory beanFactory):beanFactory参数指向创建它的BeanFactory.这个setter方法与我们往常的setter方法的使用有些差别

对象工具类 - ObjectUtils.java

对象工具类,提供对象克隆.获取对象属性.类型判断.Map转换对象.对象转Map.设置对象属性等. 源码如下:(点击下载 -  ObjectUtils.java .JsonUtils.java .gson-2.2.4.jar .commons-lang-2.6.jar) 1 import java.io.Serializable; 2 import java.lang.reflect.Field; 3 import java.lang.reflect.Method; 4 import java.u