6 单例注入多例之注入ApplicationContext
Spring bean
容器中的bean
有单例bean
,也有多例bean
。当我们需要给一个单例beanA
注入一个单例beanB
,或者给一个多例beanA
注入一个多例或单例beanB
时,都可以通过配置让Spring
的bean
容器帮我们完成。但如果我们需要给一个单例beanA
注入一个多例beanB
时,仅仅通过配置Spring
是无法帮我们的单例beanA
注入一个多例beanB
的,即无法让我们每次使用beanB
时都使用的是一个全新的beanB
。因为beanA
只初始化一次,相对应的Spring
只会给beanA
注入一个beanB
。解决办法是给beanA
注入一个ApplicationContext
,这样我们就可以在每次需要使用beanB
时都从ApplicationContext
中获取一个新的beanB
。
注入ApplicationContext
有两种方式,实现ApplicationContextAware
接口和通过@Autowired
或@Resource
注解标注让Spring
进行自动注入。
6.1 实现ApplicationContextAware接口
ApplicationContextAware
接口中定义了一个setApplicationContext()
方法,对于实现了该接口的bean
,Spring
将通过调度对应的setApplicationContext()
方法将当前ApplicationContext
传递过去。
public class Hello implements ApplicationContextAware {
private ApplicationContext applicationContext;
/**
* Spring将通过该方法给我们的bean注入当前的ApplicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}
6.2 通过注解标注
我们知道在使用注解进行配置时,我们也可以通过注解来告诉Spring
要为当前的bean
注入哪些内容。对于ApplicationContext
也是一样的,我们可以通过对应的注解来告诉Spring
将为我们注入对应的ApplicationContext
。自动注入的注解可以是@Resource
,也可以是@Autowired
。
public class Hello {
private ApplicationContext applicationContext;
@Resource
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}
(注:本文是基于Spring4.1.0所写)
相关推荐
ApplicationContext还支持Bean的懒加载、单例或多例管理、Profile功能(根据环境选择加载不同的配置)、以及与其他Spring模块(如Spring Data、Spring Security等)的集成。 总的来说,ApplicationContext作为...
使用Spring框架能够为开发者带来许多好处,例如通过依赖注入(Dependency Injection, DI)方法,能够清晰地管理对象间的依赖关系,相比于EJB容器,Spring的IoC容器更为轻量级,更适合在有限的内存和CPU资源下进行...
BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用中的对象,实现依赖注入。这篇文章将深入探讨BeanFactory的工作原理及其相关知识点。 一、BeanFactory的定义 BeanFactory是一个接口,它定义了...
在Spring框架中,ApplicationContext是核心组件之一,它不仅包含了Bean的管理,还提供了许多高级特性。在本篇文章中,我们将深入探讨剩余的重要概念——BeanFactory,它是ApplicationContext的基础,同时也是Spring...
bean的管理者——Spring容器,有两个主要接口:BeanFactory和ApplicationContext。BeanFactory是最基础的接口,负责bean的配置、创建和管理,而ApplicationContext提供了更多的企业级服务,如国际化、事件发布等。...
本文将深入探讨Spring框架的核心特性——依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),以及如何解决循环依赖问题。 首先,依赖注入是Spring框架的核心理念之一,它的...
《ApplicationContext.xml——Spring框架的核心配置文件详解》 在Java开发领域,Spring框架是不可或缺的一部分,它以其强大的依赖注入(DI)和面向切面编程(AOP)能力,为开发者提供了便利。而`ApplicationContext...
**设值注入**:通过setter方法进行依赖注入,是最常用的依赖注入方式之一。这种方式使得对象可以在创建之后再注入依赖,提高了灵活性。 c. **构造子注入**:通过构造函数参数进行依赖注入,适用于必须的依赖项。...
首先,理解Spring的核心概念——依赖注入(Dependency Injection,简称DI)。Spring通过DI管理bean,使得对象之间的依赖关系由Spring负责建立和维护,而非对象自身。这增强了代码的可测试性和可维护性。在非Spring...
SpringPython借鉴了Spring框架的核心理念——依赖注入(DI)和面向切面编程(AOP),并将其应用到了Python语言中。其中,IoC(Inverse of Control,控制反转)容器是SpringPython的核心组件之一。 ##### 1. ...
- **Spring IoC容器**:Spring的IoC容器主要由两个包组成——`org.springframework.beans`和`org.springframework.context`。其中`org.springframework.beans`主要提供Bean操作的基本支持,而`org.springframework....
首先,我们需要了解Spring的核心组件——Spring容器,也称为ApplicationContext。这个容器负责管理应用程序中的bean,包括它们的创建、初始化、装配以及销毁。在没有注解的情况下,我们通常通过XML配置文件来定义...
这个概念意味着对象的创建和依赖关系的管理不再由对象自身负责,而是由一个外部容器——Spring框架来控制。这样做的好处包括降低代码的耦合度,提高代码的可维护性和减少冗余代码。在Spring中,BeanFactory是实现IOC...
#### 一、Spring框架的核心——IoC容器 Spring框架是一个开源的轻量级Java开发框架,其核心功能是IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented Programming,面向切面编程),这些功能大大...
- **依赖注入(Dependency Injection, DI)**: 是Spring的核心特性之一,它通过自动管理对象间的依赖关系,减轻了开发者在代码中显式创建和管理对象的工作负担。依赖注入主要有三种实现类型: - **接口注入...
《手写高仿真提炼Spring——深入理解与实践》 在Java世界中,Spring框架以其强大的功能和灵活性,成为了企业级应用开发的首选。本资料旨在通过“手写高仿真提炼Spring”的方式,帮助开发者深入理解Spring的核心机制...
Spring的主要组件之一是IoC(Inversion of Control,控制反转)容器,也称为依赖注入容器。IoC意味着不再由我们的代码创建和管理对象,而是由Spring容器负责。我们只需在配置文件中声明所需对象及其依赖关系,Spring...