代码编织梦想

这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的。在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能的公共实现类,方便大家使用。在写实现类的过程中学习了在普通类中获取spring容器中的bean的方法。

如果我们需要在一个类中使用spring提供的bean对象,那么我们需要把这个bean注入到spring容器中,交给spring容器来管理。但是在实际应用中我们往往会碰到在普通的java类中,需要直接使用spring提供的对象或者说有一些对象不需要交给spring容器来管理,但是需要用到spring容器中的一些对象。

如果这是spring框架的独立应用程序,我们通过ApplicationContext对象即可获取到:

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

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

在springboot中有一种实现方式,可以很方便的获取到ApplicationContext对象:SpringBoot平台下采用ApplicationContextAware的方式完成ApplicationContext实例的获取,并通过ApplicationContext实例完成对Spring管理的Bean实例手动获取

创建一个实体类SpringUtil并实现ApplicationContextAware接口,重写接口内的setApplicationContext方法来完成获取ApplicationContext实例的方法。
如下为ApplicationContextAware接口:
这里写图片描述

具体实现请参见我的Github:SpringBoot在普通类中获取spring容器中的bean

注意两个地方:
1、SpringUtil类上的 @Component注解必须要有,否则spring就不会自动调用setApplicationContext方法来为我们设置上下文实例;
2、SpringUtil类要在springboot可以扫描到的包下;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lmb55/article/details/82156262

如何从当前spring容器中获得bean?-爱代码爱编程

1.第一种方式: 在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象。请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入。  发现  Java代码   WebApplic

spring获取webapplicationcontext,applicationcontext几种方法详解_tomspiders的博客-爱代码爱编程

方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过

springboot获取bean_程序员青戈的博客-爱代码爱编程_springboot中getbean

一种最简单的方法是实现ApplicationContextAware类来获取容器中的bean: import org.springframework.beans.BeansException; import org.spr

spring中普通类调用bean的方法_weixin_33770878的博客-爱代码爱编程

2019独角兽企业重金招聘Python工程师标准>>> 参考网址 http://412887952-qq-com.iteye.com/blog/2292388 为什么要使用 因为有这样一类需求: 普通的Java类(没有在Spring容器中管理的类),想直接使用Spring容器管理的对

springboot静态方法获取 bean的三种方式_chilx的博客-爱代码爱编程_静态方法中获取bean

注意: 调用者要被spring管理 目录 方式一  注解@PostConstruct 方式二  启动类ApplicationContext 方式三 手动注入ApplicationContext 方式一  注解@PostConstruct import com.example.javautilsproject.service.AutoMetho

用于获取spring容器bean对象的工具类-爱代码爱编程

```java package com.tensquare.notice.config; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.c

在普通类中获取spring容器中的bean-爱代码爱编程

如果我们需要在一个类中使用spring提供的bean对象,那么我们需要把这个bean注入到spring容器中,交给spring容器来管理。但是在实际应用中我们往往会碰到在普通的java类中,需要直接使用spring提供的对象或者说有一些对象不需要交给spring容器来管理,但是需要用到spring容器中的一些对象。 如果这是spring框架的独立应用程序

普通类获取spring中的bean-爱代码爱编程

一、场景 在spring工程中编写工具类或者公共标签时,很多情况都是需要复用service层代码,此时会涉及到普通类获取spring容器中bean的相关知识。 二、思路 普通类中直接使用@Autowired对要使用的service类进行依赖注入(不可行) 分析:普通类如果不在spring的管理下,那么在普通类中是不能直接使用@Autowired注解

从spring容器中获取Bean对象-爱代码爱编程

用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean,不用类似new ClassPathXmlApplicationContext()的方式,从已有的spring上下文取得已实例化的bean。通过ApplicationContextAware接口进行实现。 当一个类实现了这个接口(ApplicationContextAwa

SpringBoot普通类获取spring容器中bean的方法-爱代码爱编程

前言 在spring框架中,是无法在普通类中通过注解注入实例的,因为sping框架在启动的时候,就会将标明交给spring容器管理的类进行实例化,并梳理他们彼此的依赖关系,进行注入,没有交给spring容器管理的普通类,是不会进行注入的,即使你使用了注入的相关注解。这个时候,如果我们需要在普通类中获取spring容器中的实例,就需要一些特定的方法,这里将整

Spring获取注入Bean-爱代码爱编程

package com.clicks.config; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationC

源码分析:Spring是如何获取容器中的Bean?-爱代码爱编程

之前分析了Bean是如何注册到容器中的,既然我们把Bean交给Spring来管理,在我们需要对象的时候Spring会自动帮我们注入,那Spring肯定会有一个从容器中获取Bean的过程,只不过这个过程是Spring框架来帮我们完成的,对于我们使用者来说没有感知 下面我们就通过源码来看一下Spring是如何从容器中获取Bean的 简单的例子

【springboot】获取bean的常用方法_yano_sd的博客-爱代码爱编程

第一,简单方法。SpringContext.getBean的方式获取bean public class RuleConfigParser { private ConfigBean configBean; pr

【深入spring】从spring容器中获取bean的三种方式-爱代码爱编程

一.ClassPathXmlApplicationContext方式 从类路径下查找spring配置文件 @Test public void testGetBean01(){ //通过实例化ClassPathXmlApplicationContext对象完成加载spring配置文件 //这种方式在加载配置文件时就会把bean标签对应的