`
valentiy
  • 浏览: 4467 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring源码学习——IoC容易之BeanFactory

阅读更多

    简而言之,IoC容器就是用来管理对象以来关系的,就像用来装水的桶一样。而在SpringFramework中存在着一些列IoC容器实现,虽然功能各异,但却都遵循着同一个契约,也就是主题中的BeanFactory接口。

    简单看一下BeanFactory的定义:

   

public interface BeanFactory {

	String FACTORY_BEAN_PREFIX = "&";

	Object getBean(String name) throws BeansException;
	
	<T> T getBean(String name, Class<T> requiredType) throws BeansException;
	
	<T> T getBean(Class<T> requiredType) throws BeansException;
	
	Object getBean(String name, Object... args) throws BeansException;
		
	boolean containsBean(String name);
	
	boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
	
	boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
	
	boolean isTypeMatch(String name, Class targetType) throws NoSuchBeanDefinitionException;
	
	Class<?> getType(String name) throws NoSuchBeanDefinitionException;
	
	String[] getAliases(String name);
}

  

    如上代码就是著名的BeanFactory契约,通过源码中的注释我们可做如下理解:

  • FACTORY_BEAN_PREFIX:我们在使用IoC容器时,可以用"&"符号来选择是到底获取FactoryBean本身还是获取由FactoryBean所产生的对象。举例来说,如果myJndiObject是个FactoryBean的话,那么使用&myJndiObject所获得的FactoryBean本身而不是由myJndiObject这个FactoryBean所产生的对象。
  • getBean:getBean方法是IoC容器API种的主要方法,通过这个方法可以获取由IoC容器所管理的Bean实例,在这个接口中有四个不同形式的该方法定义,也就是说在具体视线中我们至少会有四种方式来获取Bean实例:
    • 通过Bean的name来获取;
    • 通过Bean的name来获取,并且该Bean要匹配requiredType所属类型;
    • 通过requiredType参数类型来获取Bean实例
    • 通过Bean的name来获取,同时在Bean是prototype类型情况下,可以通过给定的参数来覆盖默认构造函数中的中的参数。
  • containsBean:通过该方法可以判断容器中是否含有指定名字的Bean
  • isSingleton:根据Bean的name来判断该Bean是否是单件,这个属性可在BeanDefinition中指定。
  • isPrototype:感觉Bean的name来判断该Bean是否是prototype类型,这个属性也可在BeanDefinition中进行指定。
  • isTypeMatch:用来判断容器中指定名字的Bean是否是targetType类型
  • getType:用来获取容器中指定name的Bean的类型
  • getAliases:用来查询容器中指定名字的Bean的别名,这些别名都可以在BeanDefinition中进行定义。

    以上接口和方法也就描绘出spring中IoC容易的蓝图,而根据不同的应用需求也将会有不同的实现方式,那些将是接下去的事情了。

分享到:
评论

相关推荐

    二、Spring源码分析——BeanFactory

    《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...

    Spring源码解析.zip

    本压缩包“Spring源码解析”提供了对Spring框架核心组件——IOC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及Transaction(事务管理)的源码分析,帮助开发者更全面地...

    spring 源码中文注释

    首先,我们来看看Spring的核心组件——IoC容器。IoC容器是Spring的核心,它负责管理对象的生命周期和对象之间的依赖关系。通过XML配置或基于注解的方式,我们可以告诉IoC容器如何创建和装配对象。在源码中,`...

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

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

    spring ioc

    标题 "Spring IOC" 描述了我们讨论的核心主题——Spring 框架中的依赖注入(Inversion of Control,简称 IOC)机制。Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件...

    小读spring ioc源码(一)——整体介绍

    《Spring IOC源码解析(一)——整体介绍》 在深入理解Spring框架的过程中,源码分析是不可或缺的一环。本文将对Spring的IOC(Inversion of Control,控制反转)...希望本文能为你开启Spring源码探索之旅的第一步。

    深入解析Spring IoC:源码与实践指南

    在深入解析Spring IoC的过程中,我们首先关注的是其核心组件——IoC(Inversion of Control,控制反转)机制。Spring框架通过IoC容器管理应用程序的组件,实现了依赖注入,使得对象之间的依赖关系由容器负责建立和...

    spring源码UML图

    首先,"spring源码UML图"通常包括以下几种类型的UML图: 1. 类图(Class Diagram):类图展示了Spring框架中的类和接口,以及它们之间的关系,如继承、实现、关联和依赖。这有助于我们了解Spring的核心组件,如...

    spring源码, 可以很好的学习spring源码, 对spring更深入理解

    总之,通过深入学习Spring源码,开发者不仅可以提升编程能力,还能掌握更多软件设计和架构方面的知识,对于职业发展大有裨益。在实际开发中,结合源码理解,能够更好地解决遇到的问题,优化代码,提高工作效率。

    02-01-03-一步一步手绘Spring IOC运行时序图1

    课程的目标是通过分析Spring源码,使学习者能够深刻理解SpringIOC容器的工作原理和设计思想,并能亲手绘制出容器的运行时序图。此外,还强调了如何有效地阅读和理解源码,这对于任何开发者来说都是一个必不可少的...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    java毕业设计&课设-spring源码深度解析+注解开发全套视频教程(视频+源码).doc

    ### Java毕业设计&课设——Spring源码深度解析+注解开发全套视频教程知识点概览 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一款开源轻量级Java EE应用框架,旨在简化企业级应用的开发过程。Spring...

    Spring有关资料 源码

    这个压缩包中的源码可以帮助我们学习Spring框架的设计模式和实现细节,例如,如何使用注解配置Bean,如何编写AOP切面,以及如何集成Spring与其他技术。对于初学者,通过阅读和分析这些源码,可以加深对Spring的理解...

    spring-2.5.6源码

    在源码中,`org.springframework.beans.factory.BeanFactory`接口和`org.springframework.context.ApplicationContext`接口是IoC容器的基石。`ApplicationContext`提供了更丰富的功能,如事件发布、国际化支持和AOP...

    Spring基础:IoC容器(2)

    在本篇博文中,我们将深入探讨Spring框架的基础概念,特别是其核心特性——控制反转(Inversion of Control,IoC)容器。IoC容器是Spring框架的基石,它负责管理对象的生命周期和对象间的依赖关系。通过IoC,我们...

    spring3.1.2源码包

    四、源码学习价值 理解Spring的源码,可以帮助我们: 1. 掌握Spring的工作原理,优化代码设计。 2. 自定义扩展,满足特定需求。 3. 提升问题排查能力,理解异常背后的深层次原因。 总结,Spring 3.1.2源码的学习是...

    spring基础源码

    通过深入学习Spring源码,不仅能提升我们的技术水平,还能培养良好的编程习惯和架构思维。 总之,这份资料包为初学者提供了一个很好的平台,通过实例配置文件和源码,我们可以深入理解Spring的基础知识,包括依赖...

    spring加载

    3. **IoC(控制反转)与DI(依赖注入)**:在Spring中,bean的创建和初始化由Spring容器控制,这就是所谓的控制反转。依赖注入则是通过容器将bean所需的服务或对象传递给它,而不是由bean自己去查找。这大大提高了...

    springbook-master.rar

    下面我们将详细探讨Spring框架的核心概念、主要模块以及源码学习的重要性。 1. **Spring框架概述** Spring是一个开源的Java平台,它简化了开发复杂的Java应用程序。它提供了一个全面的编程和配置模型,使得开发...

Global site tag (gtag.js) - Google Analytics