`
yuanyao
  • 浏览: 147233 次
  • 性别: Icon_minigender_1
  • 来自: 就那小山沟
社区版块
存档分类
最新评论

Bean和BeanFactory

阅读更多
Bean是Spring管理的基本单位,在Spring的J2EE应用中,所有的组件都是bean,bean包括数据源、Hibernate的SessionFactory及事务管理器等。Spring里的bean是非常广义的概念,任何的Java对象,Java组件都可别当成bean处理。

BeanFactory-->Spring容器最基本的接口。BeanFactory负责配置、创建及管理bean,以及bean与bean之间的依赖关系。
BeanFactory接口包含如下的基本方法:
Boolean containsBean(String name):
判断Spring容器是否包含id为name的bean定义。
Object getBean(String name):
返回容器id为name的bean.
Object getBean(String name, Class requiredType):
返回容器中id为name,并且类型为requiredType的bean.
Class getType(String name):
返回容器中id为name的bean的类型.

Bean的基本定义:
通常必须的两个属性:
1 id
2 class
很显然bean的实例化可以通过BeanFactory的getBean()方法得到.
在Spring1.2中,bean在Spring的容器中有两种基本类型:
1singleton:单态
2not-singleton或prototype:原型
每次请求id为not-singleton类型的bean时,Spring都会新建一个bean实例,然后返回给程序.通常要求将Web应用的控制器bean配置成non-singleton类型。因为,每次HttpServletRequest都需要系统启动一个新Action来处理用户请求。如果不指定bean的基本行为,Spring默认使用singleton类型,non-singleton类型的bean的创建、销毁代价比较大,而singleton类型的bean实例成功后,可以重复使用,因此,建议应尽量避免将bean设置成为non-singleton类型。

创建bean的实例通常有以下方法:
1 调用构造器创建一个bean实例
通过"new"关键字创建bean实例
2 BeanFactory调用某个类的静态工厂方法创建bean
使用静态工厂创建bean实例时,class属性也是必需的,但此时class属性并不是该实例的实现类,而是静态工厂类。由于Spring需要知道由哪个静态工厂方法来创建bean实例,因此使用factory-method属性来确定静态工厂方法名。
3 BeanFactory调用实例工厂方法创建bean
实例工厂方法必须提供工厂实例,因此必须在配置文件中配置工厂实例,而bean元素无需class属性,因为BeanFactory不再直接实例化该bean,仅仅是执行工厂的方法,负责生成bean实例.


实例工厂方法和静态工厂方法用法基本相似,我们来看看它门的区别和相同点:

区别:
1 调用实例工厂方法创建bean时,必须将实例工厂配置成bean实例,而静态工 厂方法则无须配置工厂bean.
2 调用实例工厂方法创建bean时,必须使用factory-bean属性来确定工厂bean, 而静态工厂方法则使用class元素确定静态工厂类.
相同点:
1 都需使用factory-method属性指定产生bean实例的工厂方法
2 工厂方法需要参数,都使用construtor-arg属性确定参数值
3 其他依赖注入属性,都使用property元素确定参数值
分享到:
评论

相关推荐

    Spring中ApplicationContext和beanfactory区别.rar

    在Spring框架中,ApplicationContext和BeanFactory是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入学习和使用Spring至关重要。 首先,BeanFactory是Spring中最基础的bean管理容器,它...

    二、Spring源码分析——BeanFactory

    1. **对象的创建**:BeanFactory能够根据配置信息创建bean实例,支持延迟加载(lazy-init),只有在真正需要时才会实例化bean。 2. **依赖注入**:BeanFactory可以根据bean之间的依赖关系,自动装配bean的属性,无需...

    day38 05-Spring的BeanFactory与ApplicationContext区别

    在Spring框架中,BeanFactory和ApplicationContext是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入掌握Spring框架至关重要。 首先,BeanFactory是Spring中最基本的bean容器,它提供了对...

    BeanFactory的实例化

    在 Spring 框架中,BeanFactory 是一个核心组件,负责管理和实例化 Bean。Spring 3 中提供了三种实例化 BeanFactory 的方法,下面将详细介绍这三种方法。 第一种方法:从文件系统资源实例化 BeanFactory 在 Spring...

    简单模拟Spring的beanFactory

    5. **bean的管理**:`BeanFactory`会维护一个bean的注册表,以便于管理和查找bean。此外,它还支持懒加载,即只有在需要时才实例化bean。 接下来,我们将模拟一个简单的`BeanFactory`,包括bean的注册、查找和依赖...

    spring运行过程中动态注册bean

    动态注册Bean的核心在于能够获取到`BeanFactory`的引用,通常我们使用的`ApplicationContext`接口并不直接提供Bean的注册功能,但是它的子接口`ConfigurableApplicationContext`和`BeanFactory`的实现类`...

    BeanFactory内部解析:Spring框架的心脏如何运作

    总的来说,可以初步理解BeanFactory 为 Spring 框架中负责管理 bean 对象的核心组件,它通过 IoC 容器、延迟加载、依赖注入和作用域管理等机制,实现了对象之间的解耦和灵活配置,从而提高了应用程序的可维护性、可...

    BeanFactory创建对象.docx

    在Spring框架中,BeanFactory是核心的容器,它负责管理和创建对象,这些对象通常被称为"bean"。...在实际开发中,通常会结合使用BeanFactory和ApplicationContext,以充分利用Spring提供的各种特性。

    BeanFactory的Bean的生命周期.pdf

    BeanFactory的Bean的生命周期流程图

    JAVA软件工程课程体系

    Spring2概述、bean和BeanFactory等。 通过上述详细的内容介绍,我们可以看出,JAVA软件工程课程体系覆盖了从JAVA语言基础到高级应用技术的全面内容,旨在培养具有深厚JAVA技术背景和实战经验的专业人才。

    详解Spring中Bean的生命周期和作用域及实现方式

    4. 设置BeanFactory:在这个阶段,Bean已经实例化,并且已经设置了BeanFactory。 5. 设置ApplicationContext:在这个阶段,Bean已经实例化,并且已经设置了ApplicationContext。 6. 实现 Aware 接口:在这个阶段,...

    spring中的BeanFactory解析xml文件

    在Spring框架中,BeanFactory是核心的容器,它负责管理和装配应用中的对象,即bean。当我们谈论“Spring中的BeanFactory解析XML文件”时,我们实际上是在讨论如何通过XML配置文件来定义、创建和管理bean。这篇文章将...

    简单了解Spring中BeanFactory与FactoryBean的区别

    简单了解Spring中BeanFactory与FactoryBean的...BeanFactory和FactoryBean都是Spring框架中的重要组件,它们提供了不同的功能和机制来管理和生成Bean。理解它们之间的区别对我们使用Spring框架开发应用程序非常重要。

    Spring Bean创建初始化流程.docx

    在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个步骤。以下是对Spring Bean创建初始化流程的详细解释: 1. **初始化ApplicationContext**: 开始时,通过`...

    Spring中与Bean相关的接口

    最后,`AutowireCandidateResolver`和`BeanFactoryAware`接口分别提供了候选Bean的判断逻辑和BeanFactory的获取方式,这些在特定场景下能帮助我们实现更复杂的Bean管理。 综上所述,Spring中的Bean接口和注解为...

    spring bean 属性总结

    - **id属性**:是Bean在BeanFactory中的唯一标识符,用于通过BeanFactory获取Bean实例。例如,`<bean id="myBean" class="com.example.MyClass">`。 - **name属性**:类似于`id`属性,但可以定义多个别名。例如,`...

    Java中Spring获取bean方法小结

    总结,Spring框架通过BeanFactory和ApplicationContext提供了灵活的方式来管理和获取Bean。开发者可以根据应用需求选择合适的方式,从XML配置到注解注入,再到基于Java的配置,Spring都提供了全面的支持。理解这些...

Global site tag (gtag.js) - Google Analytics