基本Bean装配 《Srping in action》阅读笔记

容器可以创建组件,装配和配置组件,以及管理他们的整个生命周期。容器是Spring框架的核心,Spring容器使用DI管理所以组成应用系统的组件。

 

Spring提供多种容器实现,并分为两类:Bean工厂(由org.springframework.beans.factory.BeanFactory接口定义),是最简单的容器,提供了基础的依赖注入支持。应用上下文(由org.springframework.context.ApplicationContext接口定义)建立在Bean工厂基础之上,提供了系统架构服务,如:从属性文件中读取文本信息,向有关的事件监听器发布事件。

 

ApplicationContextBeanFactory都是载入Bean定义信息,装配Bean,根据需要分发Bean。但是ApplicationContext提供更多的功能:

1.提供文本信息解析工具,包括国际化I18N的支持

2.提供载入文件资源的通用方法,如载入图片

3.可以向注册为监听器的Bean发送事件

由于提供的附加功能,因此应用系统几乎都选择ApplicationContext

 

BeanFactory的一个示例:

BeanFactory factory=new XmlBeanFactory(new  FileSystemResource("c:/beans.xml"));

 

ApplicationContext常用的三个实现:

ClassPathXmlApplicationContext--从类路径的XML文件载入上下文定义信息

FileSystemXmlApplicationContext--从文件系统的XML文件载入上下文定义信息

XmlWebApplicationContext--Web系统中的XML文件载入上下文定义信息

 

例:ApplicationContext context=new FileSystemXmlApplicationContext("c:/foo.xml");

ApplicationContext context=new ClassPathXmlApplicationContext("foo.xml");

 

创建Bean

1.声明一个bean

<bean id="duke" class="com.springinaction.springidol.Juggler"/>

2.通过构造函数注入

<bean id="duke" class="com.springinaction.springidol.Juggler">

<consturctor-arg value="15"/>  //注入简单参数

<consturctor-arg ref="sonnet"/>   //注入一个bean

<bean/>

3.注入Bean属性

<bean id="kenny" class="com.springinaction.springidol.Insturmentalist">

<property  name="song" value="Jingle Bells"/>   //注入简单参数

<property  name="song" ref="piano"/>     //注入一个bean

</bean>

4.集合装配

<list>:允许重复

<bean id="hank" class="com..springinaction.springidol.OneManBand">

<property  name="instrucments">

<list>

<ref  bean="guitar"/>

<ref  bean="cymbal"/>

<ref  bean="harmonica"/>

</list>

</property>

</bean>

 

<set>:确保无重复,重复的被忽略

<bean id="hank" class="com..springinaction.springidol.OneManBand">

<property  name="instrucments">

<set>

<ref  bean="guitar"/>

<ref  bean="cymbal"/>

<ref  bean="harmonica"/>

</set>

</property>

</bean>

 

<map>:名值对的集合,名值可以是任意类型

<bean id="hank" class="com..springinaction.springidol.OneManBand">

<property  name="instrucments">

<map>

<entry  key="GRITAR" value-ref="guitar"/>

<entry  key="CYMBAL" value-ref="cymbal"/>

<entry  key="HARMONICA" value-ref="hrmonica"/>

</map>

</property>

</bean>

 

<map>:名值对的集合,名值只能是String类型

<bean id="hank" class="com..springinaction.springidol.OneManBand">

<property  name="instrucments">

<props>

<prop  key="GRITAR" >AAAAA</prop>

<prop  key="CYMBAL" >BBBBB</prop>

<prop  key="HARMONICA" >CCCC</prop>

</props>

</property>

</bean>

 

控制Bean的创建:

1.默认时,所有spring bean都是单例的。为了使得每次都能产生一个新的Bean实例,可以声明Beanscope属性为prototype

2.利用工厂方法创建bean

<bean id="theStage" calss="com..springinaction.springidol.Stage" factory-method="getInstance">

posted @ 2011-12-20 15:35  rason2008  阅读(277)  评论(1编辑  收藏  举报