`
javasee
  • 浏览: 960595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

spring技术手册阅读笔记(二) spring bean的使用

阅读更多
Spring的依赖注入容器的核心是Bean工厂。Bean工厂负责管理组件和它们之间的依赖关系。一般说来,你的beans应该遵守JavaBeans规范,但是这不是必须的,如果使用构造器依赖注入来连接的beans的时候,就没有遵守beans规范(beans规范中的javabean构造函数没有参数)。
一个BeanFactory可以用接口org.springframework.beans.factory.BeanFactory表示, 这个接口有多个实现。 最常使用的的简单的beanFactory实现是org.springframework.beans.factory.xml.XmlBeanFactory。
如果通过配置文件来完成配置,在内部是通过实现了BeanDefinition接口的类的实例来表现的。Bean的配置不仅存储着关于bean自己的信息,同时还有其依赖的beans的信息。对于任何实现了beanDefinitionRegistry接口的BeanFactory类,从配置文件中读取Bean定义(BeanDefinition)数据,既可以通过PropertiesBeanDefinitionReader(基于.properties文件)也可以通过XMLBeanDefinitionReader(基于XML文件)。
XmlBeanFactory派生于DefaultListableBanFactory并且简单的扩展了它,使它能够通过XmlBeanDefinitionReader自动获取配置信息。用户不需要实例化BeanFactory, 因为Spring框架代码会做这件事。
一个XmlBeanFactory中的Bean定义包括的内容有:
classname:这通常是bean的真正的实现类。但是如果一个bean使用一个静态工厂方法所创建而不是被普通的构造函数创建,那么这实际上就是工厂类的classname
bean行为配置元素:它声明这个bean在容器的行为方式(比如prototype或singleton,自动装配模式,依赖检查模式,初始化和析构方法)。
BeanFactory调用某个类的静态的工厂方法来创建bean, class属性指定了实际包含静态工厂方法的那个类。有以下3个途径创建bean:
1.通过构造函数创建bean
2.通过静态工厂方法创建Bean
3.通过实例工厂方法创建bean
每一个bean都有一个或多个id(也叫作标志符,或名字;这些名词说的是一回事)。这些id在管理bean的BeanFactory或ApplicationContext中必须是唯一的。 一个bean一般只有一个id,但是如果一个bean有超过一个的id,那么另外的可以认为是别名。
Beans被定义为两种部署模式中的一种:singleton或prototype。
如果一个bean是singleton形态的,那么就只有一个共享的实例存在, 所有和这个bean定义的id符合的bean请求都会返回这个唯一的、特定的实例。
如果bean以non-singleton,prototype模式部署的话,对这个bean的每次请求都会创建一个新的bean实例。这对于例如每个user需要一个独立的user对象这样的情况是非常理想的。
Beans默认被部署为singleton模式,除非你指定。要记住把部署模式变为non-singletion(prototype)后,每一次对这个bean的请求都会导致一个新创建的bean,而这可能并不是你真正想要的。所以仅仅在绝对需要的时候才把模式改成prototype。(我仅在ThrowawayController时使用过singleton="false)
反向控制/依赖注射存在两种主要的形式:
1.基于setter的依赖注射,是在调用无参的构造函数或无参的静态工厂方法实例化你的bean之后, 通过调用你的bean上的setter方法实现的。 在BeanFactory中定义的使用基于setter方法的注射依赖的bean是真正的JavaBean。 Spring一般提倡使用基于setter方法的依赖注射,因为很多的构造函数参数将会是笨重的, 尤其在有些属性是可选的情况下。
2.基于构造函数的依赖注射,它是通过调用带有许多参数的构造方法实现的, 每个参数表示一个合作者或者属性。 虽然Spring一般提倡在大多数情况下使用基于setter的依赖注射, 但是Spring还是完全支持基于构造函数的依赖注射, 因为你可能想要在那些只提供多参数构造函数并且没有setter方法的遗留的bean上使用Spring。 另外对于比较简单的bean,使用构造函数方法以确保bean不会处于错误的状态。
分享到:
评论

相关推荐

    Spring技术内幕 学习笔记

    《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...

    Spring全家桶知识笔记.pdf

    在进行企业级应用开发时,Spring的这些特性可以与Java EE规范中的其他技术无缝整合,如JPA、JMS、JTA等,进一步拓展了Spring的使用场景和能力。在不断的发展中,Spring全家桶还包含了Spring Boot、Spring Cloud等更...

    马士兵老师spring框架学习笔记

    6. **数据访问集成**:Spring支持多种数据库访问技术,包括JDBC、ORM(Object-Relational Mapping)框架如Hibernate和MyBatis等,通过数据源和事务管理,简化了数据库操作。 7. **Spring AOP事务管理**:Spring提供...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...

    spring-note spring 读书笔记

    这份"spring-note spring 读书笔记"深入探讨了Spring的核心概念以及如何与其他流行技术如JDBC、Hibernate、Struts和事务管理进行集成。 1. **Spring依赖注入(IOC)**: Spring的IOC容器是其核心,负责创建对象并...

    Spring5框架课堂笔记.7z

    同时,Spring Data支持对各种持久化技术(如JPA、Hibernate)的集成,简化了数据访问层的开发。 9. **Spring AOP切面**:包括通知(advises)、连接点(join points)、切入点(pointcuts)等概念,以及自定义切面...

    Spring高级源码学习笔记.zip

    在阅读Spring源码笔记时,建议结合实际项目经验,逐步理解并实践源码中的关键概念。"查看密码,打开必看.txt"可能是提供解压文件的密码,确保正确解压并阅读PDF文档,以获得完整的知识体系。 总之,Spring源码学习...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    spring-boot学习笔记

    ### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    Spring高级框架课程笔记.pdf

    * Bean:在 Spring 框架中,Bean 是一个核心概念,表示一个可以被 Spring 框架管理的对象。 * DI(Dependency Injection):在 Spring 框架中,DI 是一种设计模式,能够将对象的耦合度降低,提高对象的灵活性和可...

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

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

    spring高级源码笔记.pdf

    Spring框架是Java开发领域中的一个核心支柱,以其强大的功能和灵活性深受开发者喜爱。Spring的核心理念是依赖注入...在阅读过程中,做笔记是非常重要的,可以帮助理解和记忆,同时也可以作为未来解决问题的参考资料。

    Spring的学习笔记

    以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...

    传智博客Spring框架2016版笔记资料(四天)

    第二天的笔记可能涵盖了Spring的Bean管理,包括Bean的生命周期、初始化方法、销毁方法以及不同作用域(如单例、原型等)的详细解释。此外,可能还会涉及Bean的自动装配和自定义配置。 第三天的学习内容可能进一步...

    【狂神说】Spring全面详细笔记.md

    1. **开源且免费**:Spring是一个开源框架,这意味着开发者可以自由地使用、修改和分发它,而无需支付任何费用。 2. **轻量级和非侵入式**:引入Spring框架并不会对现有的应用程序结构产生显著影响,因为它并不强制...

    Spring笔记示例源代码

    "Spring笔记示例源代码"这个资源很可能是为了帮助学习者深入理解Spring框架的各种功能和用法而提供的实际代码示例。 1. **Spring IoC**:IoC是Spring的核心特性,它将对象的创建和管理权交给Spring容器,使得开发者...

    Spring技术内幕学习笔记.docx

    总的来说,《Spring技术内幕》的学习笔记详细介绍了Spring IoC容器的内部工作原理,包括其层次结构、主要接口和实现、以及Bean定义的加载和解析过程。理解这些内容对于深入掌握Spring框架,优化应用设计,以及解决...

Global site tag (gtag.js) - Google Analytics