`

Spring(05)——单例注入多例之ApplicationContext

阅读更多

5 单例注入多例之注入ApplicationContext

Spring bean容器中的bean有单例bean,也有多例bean。当我们需要给一个单例beanA注入一个单例beanB,或者给一个多例beanA注入一个多例或单例beanB时,都可以通过配置让Springbean容器帮我们完成。但如果我们需要给一个单例beanA注入一个多例beanB时,仅仅通过配置Spring是无法帮我们的单例beanA注入一个多例beanB的,即无法让我们每次使用beanB时都使用的是一个全新的beanB。因为beanA只初始化一次,相对应的Spring只会给beanA注入一个beanB。解决办法是给beanA注入一个ApplicationContext,这样我们就可以在每次需要使用beanB时都从ApplicationContext中获取一个新的beanB
注入ApplicationContext有两种方式,实现ApplicationContextAware接口和通过@Autowired@Resource注解标注让Spring进行自动注入。

5.1 实现ApplicationContextAware接口

ApplicationContextAware接口中定义了一个setApplicationContext()方法,对于实现了该接口的beanSpring将通过调度对应的setApplicationContext()方法将当前ApplicationContext传递过去。

public class Hello implements ApplicationContextAware {
	
	private ApplicationContext applicationContext;

	/**
	 * Spring将通过该方法给我们的bean注入当前的ApplicationContext
	 */
	public void setApplicationContext(ApplicationContext applicationContext) {
		this.applicationContext = applicationContext;
	}
	
}

5.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所写)

 

本文转自:https://elim.iteye.com/blog/2383857

分享到:
评论

相关推荐

    三、Spring源码分析——ApplicationContext

    ApplicationContext还支持Bean的懒加载、单例或多例管理、Profile功能(根据环境选择加载不同的配置)、以及与其他Spring模块(如Spring Data、Spring Security等)的集成。 总的来说,ApplicationContext作为...

    Spring————面试题库

    使用Spring框架能够为开发者带来许多好处,例如通过依赖注入(Dependency Injection, DI)方法,能够清晰地管理对象间的依赖关系,相比于EJB容器,Spring的IoC容器更为轻量级,更适合在有限的内存和CPU资源下进行...

    二、Spring源码分析——BeanFactory

    BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用中的对象,实现依赖注入。这篇文章将深入探讨BeanFactory的工作原理及其相关知识点。 一、BeanFactory的定义 BeanFactory是一个接口,它定义了...

    Spring官网阅读(十三)ApplicationContext详解(下)

    在Spring框架中,ApplicationContext是核心组件之一,它不仅包含了Bean的管理,还提供了许多高级特性。在本篇文章中,我们将深入探讨剩余的重要概念——BeanFactory,它是ApplicationContext的基础,同时也是Spring...

    Spring学习笔记,精华摘要

    bean的管理者——Spring容器,有两个主要接口:BeanFactory和ApplicationContext。BeanFactory是最基础的接口,负责bean的配置、创建和管理,而ApplicationContext提供了更多的企业级服务,如国际化、事件发布等。...

    Spring简单仿写,实现基本IOC,依赖注入和AOP 未解决循环依赖

    本文将深入探讨Spring框架的核心特性——依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),以及如何解决循环依赖问题。 首先,依赖注入是Spring框架的核心理念之一,它的...

    ApplicationContext.xml

    《ApplicationContext.xml——Spring框架的核心配置文件详解》 在Java开发领域,Spring框架是不可或缺的一部分,它以其强大的依赖注入(DI)和面向切面编程(AOP)能力,为开发者提供了便利。而`ApplicationContext...

    夏昕-SpringGuide(Spring 开发指南).pdf

    **设值注入**:通过setter方法进行依赖注入,是最常用的依赖注入方式之一。这种方式使得对象可以在创建之后再注入依赖,提高了灵活性。 c. **构造子注入**:通过构造函数参数进行依赖注入,适用于必须的依赖项。...

    普通类调用Spring bean对象

    首先,理解Spring的核心概念——依赖注入(Dependency Injection,简称DI)。Spring通过DI管理bean,使得对象之间的依赖关系由Spring负责建立和维护,而非对象自身。这增强了代码的可测试性和可维护性。在非Spring...

    SpringPython使用介绍指南.doc

    SpringPython借鉴了Spring框架的核心理念——依赖注入(DI)和面向切面编程(AOP),并将其应用到了Python语言中。其中,IoC(Inverse of Control,控制反转)容器是SpringPython的核心组件之一。 ##### 1. ...

    Spring的经典面试题

    - **Spring IoC容器**:Spring的IoC容器主要由两个包组成——`org.springframework.beans`和`org.springframework.context`。其中`org.springframework.beans`主要提供Bean操作的基本支持,而`org.springframework....

    最简单的一个spring注解实例

    首先,我们需要了解Spring的核心组件——Spring容器,也称为ApplicationContext。这个容器负责管理应用程序中的bean,包括它们的创建、初始化、装配以及销毁。在没有注解的情况下,我们通常通过XML配置文件来定义...

    Spring学习资料

    这个概念意味着对象的创建和依赖关系的管理不再由对象自身负责,而是由一个外部容器——Spring框架来控制。这样做的好处包括降低代码的耦合度,提高代码的可维护性和减少冗余代码。在Spring中,BeanFactory是实现IOC...

    Spring的IoC容器初始化源码解析

    #### 一、Spring框架的核心——IoC容器 Spring框架是一个开源的轻量级Java开发框架,其核心功能是IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented Programming,面向切面编程),这些功能大大...

    spring+MVC中文教程

    - **依赖注入(Dependency Injection, DI)**: 是Spring的核心特性之一,它通过自动管理对象间的依赖关系,减轻了开发者在代码中显式创建和管理对象的工作负担。依赖注入主要有三种实现类型: - **接口注入...

    手写高仿真提炼Spring.zip

    《手写高仿真提炼Spring——深入理解与实践》 在Java世界中,Spring框架以其强大的功能和灵活性,成为了企业级应用开发的首选。本资料旨在通过“手写高仿真提炼Spring”的方式,帮助开发者深入理解Spring的核心机制...

    Spring的上课内容

    Spring的主要组件之一是IoC(Inversion of Control,控制反转)容器,也称为依赖注入容器。IoC意味着不再由我们的代码创建和管理对象,而是由Spring容器负责。我们只需在配置文件中声明所需对象及其依赖关系,Spring...

Global site tag (gtag.js) - Google Analytics