« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9694438 建立时间:2004年12月20日 |

| |
[java语言]spring技术手册阅读笔记(二) spring bean的使用 原创空间, 软件技术
邢红瑞 发表于 2006/8/6 13:50:06 |
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.通过构造函数创建bean2.通过静态工厂方法创建Bean3.通过实例工厂方法创建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 bean的使用 原创空间, 软件技术
lsamsony(游客)发表评论于2006/8/29 17:34:26 |
至于singleton=false,很多是利用introduction实现多重继承而使用prototype,你msn换了也不通知一声,太不够意思了吧。 |
|
回复:spring技术手册阅读笔记(二) spring bean的使用 原创空间, 软件技术
tom(游客)发表评论于2006/8/8 18:24:37 |
|
» 1 »
|