如何通过代码直接获得Spring容器中的Bean?

如题所述

[引文]通常在struts2+spring的例子上,要想使用spring的Bean,可以在applicationContext.xml加上如下配置
<bean id="springBean" scope="prototype" class=""
<property name="name" value="chen"/</bean<bean id="myAction" scope="prototype" class=""
<property name="springBean" ref="springBean"/</bean如果是j2ee应用,启动web应用时将会自动加载ApplicationContext实例(Spring容器负责创建Bean实例)
一旦struts2的myAction实例化,其中的SpringBean也会被自动注入进来,从而达到使用SpringBean的目的。
[问题]但是仍有需要通过代码来调用SpringBean的情况:
1)对于不是由spring创建管理的类,如在java 代码中直接使用new去创建一个对象,并且想在这个对象中使用
SpringBean;因为这个对象并不是由Spring容器创建管理的类,所以即使它有setter方法,容器的springBean也不会被注入。
2)动态更改springBean中的属性值,如在代码运行时,name值需要发生变动;
3)对于一个独立的应用程序[解决]定义一个非Spring容器创建管理的类
public class NonSpringClass implements ServletContextAware {
private SpringBean springBean;
//如果 testGetBean不是被Spring容器创建管理,即使它有setter方法,容器的springBean也不会被注入。
public void setSpringBean(SpringBean springBean){this.springBean=springBean;}//利用ApplicationContext 从spring容器中获得springBean;
//Spring有两个核心接口BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口,
//它们代表了Spring容器,Spring容器是产生Bean的工厂,用于管理容器中的Bean。
public NonSpringClass (){//ApplicationContext acx = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext acx = new FileSystemXmlApplicationContext("src/WEB-INF/applicationContext.xml");
springBean=(SpringBean)acx.getBean("springBean");}}调用这个类的代码:
import com.NonSpringClass;
public class TestCode {
private NonSpringClass nonSpringClass;
//这样nonSpringClass里将包含Spring容器创建的springBean}}
温馨提示:内容为网友见解,仅供参考
无其他回答

普通Java类获取spring 容器的bean的5种方法
获取Spring容器中bean的五种方法如下: 在初始化时保存ApplicationContext对象。 通过Spring提供的工具类获取ApplicationContext对象。 继承自抽象类ApplicationObjectSupport。 继承自抽象类WebApplicationObjectSupport。 实现接口ApplicationContextAware。在普通Java类中实现这五种方法获取Spring容器的be...

快速了解获取Spring Bean的8种方式
1. ClassPathXmlApplicationContext: 通过从src\/main\/resources路径加载XML配置文件,创建ApplicationContext实例来获取bean。例如,先定义xml配置,然后在Java类中通过指定配置文件路径获取bean。2. ApplicationContext接口: 在Spring Boot项目中,通过启动后自动获取容器中的bean,需要bean有注解以便注入。3. Appl...

spring如何获取bean的6种方法,你知道几个?
方法一:在初始化时保存ApplicationContext对象。适用于采用Spring框架的独立应用程序,需通过配置文件手工初始化Spring。方法二:利用Spring提供的工具类获取ApplicationContext对象。适合于采用Spring框架的B\/S系统,通过ServletContext对象获取ApplicationContext,再通过它获取所需类实例。与方法一的区别在于,前者在...

Spring中获取bean的方式
1.1 方式一:根据id获取 由于id属性指定了bean的唯一标识,因此可以通过bean标签的id属性精确地获取到一个组件对象。如开头中我们使用的就是这种方式。bean标签属性:1.2 方式二:根据类型获取 这种用法较为常见。注意:1.3 方式三:根据id和类型 第三种方式似乎有些鸡肋。可能是因为单纯通过id获取需要...

JSP页面怎样调用Spring配置文件中定义的Bean
首先你需要有一个jar包,形如spring-web-3.2.0.M2.jar,将此包加入build Path并部署或者直接复制到WEB-INF\/lib下,这是spring应用在web项目时需要用到的jar包 然后在jsp页面中导入相关的工具类:<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%><%@ page ...

spring如何获取bean的6种方法,你知道几个?
Spring框架中的Bean获取有六种主要方式,这些方法分别适用于不同的应用场景。首先,BeanFactory和ApplicationContext是Spring的核心组件,前者是底层基础,后者则是面向开发者的应用上下文,更易于构建实际应用。获取Bean的方式多样,其中,最常见的是通过初始化时保存ApplicationContext对象,适用于手动配置Spring的...

Spring获取Bean的9种方式
随着Spring Boot的广泛应用,Spring容器在特定场景下的Bean获取不再局限于注解或配置。当工具类或设计模式中需要直接使用Spring管理的Bean时,了解如何获取就显得尤为重要。本文总结了获取Bean的九种常见方式,并分析了它们的优缺点。Spring的核心是IoC容器,Bean的实例化、配置和依赖关系管理都在其中进行。

Spring源码-09-Bean工厂之getBean方法
一、getBean方法 getBean方法是Spring容器对外提供的一种接口,用于根据指定的Bean名称获取对应Bean实例。该方法会根据配置信息和缓存机制,找到并返回所需的Bean。二、doGetBean方法 doGetBean方法是getBean方法的内部实现,负责处理Bean的查找、创建和返回工作。其流程分为以下几个关键步骤:1. getSingleton...

Spring 容器获取 Bean 的 9 种方式 | 京东云技术团队
在Spring框架的广泛应用中,有时需要直接获取到IoC容器管理的Bean,而非依赖于注解或配置。本文汇总了获取Bean的九种常见方法,包括优劣势分析,帮助您在实际场景中做出选择。这些方式主要围绕Spring的BeanFactory和ApplicationContext展开。BeanFactory是IoC容器的核心,主要负责Bean的实例化和依赖关系管理。

Spring从容器中获取bean对象可以分别通过什么接口?
方法一:在初始化时保存ApplicationContext对象new ClassPathXmlApplicationContext("applicationContext.xml").getBean("beanId");这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的配置信息。方法二:通过Spring提供的工具类获取ApplicationContext对象import org.springframework....

相似回答