05Bean的属性相关内容
2016-11-09 20:40
120 查看
<!-- 整篇系列内容都是根据郭峰大大的Spring从入门到精通学习整理的-->
Bean的知识相关
在Spring中,有两个最基本、最重要的包,即org.springframwork.beans和org.springframework.context.这两个包,为了实现无侵入式框架,大量引用了java的反射机制,通过动态代理避免了硬编码,为spring的反向控制提供了基础。
这两个包中,最重要的类是BeanFactory和ApplicationContext。
BeanFactory提供了一种先进的配置机制来管理任何种类的Bean。
ApplicationContext建立在BeanFactory之上,并增加了其他的功能,例如——国际化的支持、获取资源、事件传递等。
Bean的标志——ID和Name
<!--定义一个bean --> <!--<bean id="Animal" class="spring.impl.Cat"/>--> <beanid="Animal"class="spring.impl.Dog"/> |
在spring的配置文档,Beans是xml文件的根元素,一个Bean有一个Id,这个id在管理Bean的BeanFactory或ApplicationContext中必须是唯一标识的,因为在代码中通过BeanFactory或ApplicationContext来获取Bean实例时,都要用到他来作为唯一的索引。
也可以使用name属性来指定Bean的id。
ID和Name的区别
在Spring中可以用ID或者name属性来指定Bean的ID,并且这两个或者其中一个属性至少指定一个ID。ID属性允许指定一个Bean的Id,并且他在XML DTD中作为一个真正的XML元素的ID属性被标记,所以XML解析器能够在其他元素指向他的时候做一些额外的校验。
但是XML规范严格限定了在xml ID中合法的字符 如果在开发过程中有必要使用一些非法的字符,也就是说使用一些不符合ID规定的字符,又或者是给Bean增加其他的别名,这样就可以通过Name属性来指定一个或多个ID,当指定多个ID是需要使用(,)或者(:)分隔。
也就是说,用ID属性指定Bean的id是一个比较好的方式。
一个Bean一般只有一个Id,如果一个Bean有超过一个ID,那么另外的Id可以认为是这个Bean的别名。
Spring的配置文件中class属性指明了Bean的来源,即Bean的实际路径——完全限定名。
在Spring中Bean可以被定义为两种部署模式中的一种,singleton或者non-singleton(property)。
Spring默认的模式是singleton模式。
★如果一个Bean被定义为singleton模式,那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例。————单例模式
如果需要客户端每次向BeanFactory请求时,都创建新的实例,只需要把singleton=true
改成singleton=false。
★如果一个Bean被定义为non-singleton(prototype)模式,那么对这个Bean的每次请求都会创建一个新的Bean实例。————工厂模式?原型模式
Bean属性的两种注入方式:
基于setter的依赖注入:
调用无参的构造函数或午餐的额静态工厂方法实例化配置文档中定义的Bean后,通过调用对应成员的Set*()方法实现的。
基于构造函数的依赖注入:
是通过调用带有需要参数的构造方法实现的,每个参数表示一个对象或者属性。
在Bean的属性配置中,属性可以引用定义的其他Be
4000
an,也可以使用匿名Bean。
在Bean的属性配置中,属性的null值处理可以使用<value>null</value>.或者<null/>
Bean的depends-on属性可以用来在初始化使用这个Bean之前,强制执行一个或多个Bean的初始化。
<bean id=… class=… depends-on=依赖的bean名称/>,这样在初始化该Bean之前就会强制初始化所以来的Bean。
<beans…>
<!-- 定义一个Bean,bean在BeanFactory和ApplicationContext中是唯一的,Class指出这个Bean的来源,Singleton指定了这个Bean是一个单例模式,Depends-on指定了这个Bean初始化之前需要先初始化所依赖的类 -->
<bean id=”TestBean” class=”类的全限定名称” singleton=”true” depends-on=”所依赖的Bean”/>
…
</beans>
相关文章推荐
- 转载:接口包含内容概述1——接口相关概述及接口中属性的实现
- SiteMate标签的三个属性组合:实现对节点及相关节点、内容列表及内容的各种展现
- 如何设置一个style做一个属性触发去改变其他的属性值<style的相关内容>?
- python属性访问的相关内容
- 类相关的主题 子类扩展类型 伪私有属性 内容属性
- 接口包含内容概述1——接口相关概述及接口中属性的实现
- AndroidManifest之内容相关属性
- DataList嵌套,分页,点击父DataList标题在子DataList显示相关的内容,点击子DataList标题显示主要内容.
- 关于XMLHTTP无刷新数据获取和发送(转相关内容)
- DataList嵌套,分页,点击父DataList标题在子DataList显示相关的内容,点击子DataList标题显示主要内容.
- vod系统相关内容
- (实战)为系统类添加NameValueTable属性,并且添加到相关对话框
- opensource 的相关内容
- 2006-4-21 ASP 判断 URL 查询字段, 显示相关内容 by Stabx
- Tomcat中server.xml和web.xml相关属性的关系
- meta 标签相关属性
- 后台动态设置前台标签内容和属性
- 与DataGrid 列相关的内容
- ReportingService.GetDataSourceContents 获取指定数据源的相关属性
- 关于本Blog内容的声明、今后的发展方向及Teddy的其他相关站点