Spring配置文件常用元素说明
来源:互联网 发布:php 探针 不支持mssql 编辑:程序博客网 时间:2024/04/19 14:34
Spring配置文件常用元素说明
beans 是根节点
包含属性
- default-init 默认false,是否开启懒加载
- default-dependency-check 默认为none
- default-autowire 是否自动装配,默认为no
包含子节点
- description 可选
- import 包含resourse属性,引用其他配置文件
- bean 定义bean
Bean
包含属性
- id id名字
- name name
- class 必须,指定全限定名
- parent,若没有指定
- abstract 表示相应的javaBean定义只能作为parent使用,不能实例化
- scope
- lazy-init 懒加载
- autowire 自动装配,不推荐
- dependency-check 依赖关系的判断
- depends-on 保证相应的Bean在其depends-on指定的Bean实例化之后再实例化。
- init-method 指定初始化方法
- destory-metho 指定销毁方法
- factory-method 指定工厂方法
- factory-bean 指定工厂bean
包含子节点
constructor-arg 指定构造器参数
contructor-arg 用于指定方法参数
- 当方法是无参方法时,不需要使用该属性
- 当被指定的方法只有一个参数时,可以直接在contructor内嵌套一个<value>标签或者<ref>标签等,用来指定相应的参数;
<bean id="***" class="***"> <contructor-arg> <!-- 直接指定value值 --> <value type="java.lang.String">hello</value> <!-- 通过ref指定已经声明的bean值 --> <ref bean="***"/> </contructor-arg></bean>
- 当方法有多个参数时,需要通过index方法指定参数顺序。
<bean id="***" class="***"> <bean> <constructor-arg index="0" value="hello" type="java.lang.String"/> <constructor-arg index="1" value="hello" type="java.lang.String"/> </bean></bean>
在某些情况下,index可以省略,spring会根据参数的类型进行自动匹配。
* 参数也可以是一些集合类型的值,如Set,List,Map等。
<!-- list参数传入 --><constructor-arg> <list> <value>value1</value> <value>value2</value> </list></constructor-arg>
<!-- set参数传入 --><constructor-arg> <set> <value>value1</value> <value>value2</value> </set></constructor-arg>
<!-- map参数传入 --><constructor-arg> <map> <entry key="key1" value="value1"></entry> <entry key="key2" value="value2"></entry> </map></constructor-arg>
property 用于指定属性值
可以指定的类型:
- 字面值:可用字符串进行表示的值,可以使用<value>标签进行指定,一般情况下,基本数据类型以及其封装类,String类型等,均可直接使用字面值指定。
<bean id="***" class="***"> <property name="属性1名称"> <value>hello<value> </property> <property name="属性2名称"> <!-- 使用CDATA来指定原样式赋值,不会破坏XML的文件结构 --> <value><![CDATA[&<>"']]<value> </property></bean>
- 引用其他的Bean:可以将属性值指定为其他的bean类,使用<ref>标签
<bean id="bean1" class="***"/><bean id="bean2" class="***"> <property name="属性名"> <!-- ref可以通过以下三个属性引用其他Bean: bean:引用该配置文件或另外一个配置文件中的bean local:通过该属性,只能引用同一个配置文件里边的bean parent:主要用来引用当前容器或者父容器中的bean --> <ref bean="bean1"/> </property></bean>
- 内部Bean:当Spring中的bean1被且只被bean2引用是,可以考虑将beanA设置为beanB的内部Bean。
<bean id="bean2" class="***"> <property name="***"> <bean class="***"> <property name="***" value="***"/> </bean> </property></bean>
- null值:当某属性需要被指定为null值时,使用专门的<null>标签。
<bean id="***" class="***"> <property name="name1"> <!-- 空字符串,并不是null --> <value></value> </property> <property name="name2"> <!-- 需要注入null的时候,需要使用null标签 --> <null/> </property></bean>
- 级联属性:在定义bean1的时候,直接为bean2的属性提供注入值。Spring3.0之前的版本,如果需要使用级联注入,则必须在bean1的类中,创建bean2的对象,否则会有空指针异常。spring3.0之后,对这个问题做了改进,不需要再进行预先的实例化对象了。
<bean id="bean1" class="***"> <property name="bean2.p1"> <value>hello</value> </property></bean>Public class Bean1{ private Bean2 bean2 = new Bean2(); /*……getter和setter方法*/}
- 集合类型属性:spring为list、map、set、properties等集合提供了专门的配置标签,数组与list相似
<beanid="***" class="***"> <property name="***"> <list> <value>a</value> <value>b</value> <value>c</value> <list> </property> <property name="***"> <set> <value>a</value> <value>b</value> <value>c</value> <set> </property> <property name="***"> <map> <entry> <key><value>key1</value></key> <value>value1</value> </entry> <entry> <key><value>key2</value></key> <value>value2</value> </entry> <map> </property> <property name="***"> <!-- properties跟map类似,区别在于其key值只能是字符串,所以相对于map的配置更简单。 --> <props> <prop key="key1">value1</prop> <prop key="key2">value2</prop> <prop key="key3">value3</prop> <map> </property></bean>
在Spring2.0之后,配置文件中新增了集合合并的功能,允许子<bean>继承父<bean>的同名属性集合元素并将子<bean>中配置的集合属性值和父<bean>中配置的同名属性值合并。 需要指定merge="true"。
<bean id="parentBean" class="***"> <property name="hello"> <set> <value>吃饭</value> <value>睡觉</value> <value>打豆豆</value> </set> </property></bean><bean id="childBean" parent="parentBean"> <property name="hello"> <set merge="true"> <value>写博客</value> <value>敲代码</value> </set> </property></bean>
如上代码所示,childBean的set集合中,会有吃饭、睡觉、打豆豆、写博客、敲代码五个值,当merge=false时,则不会合并父类同名属性,而是简单的覆盖。
Spring自动装配
spring使用autowire来完成bean的自动装配,auto共五个可选值,包含四种自动装配形式和一个none值,autowire属性可以通过beans标签中的default-autowire属性指定默认值,对个别不适用默认值的bean,在bean标签中使用autowire属性进行覆盖。spring一般不提倡使用自动装配,使用自动装配容易引起潜在的错误,增强调试和维护的难度。
- none:不适用自动装配
- byName:通过name进行自动装配,如spring容器中有一个名为house的bean,而在Person类中,恰好有个属性为house,则在实例化person类对象时,会自动装配名称为house的bean。
- byType:同byName相似,装配按照类型,不再按照name来进行装配。
- constructor:通过构造函数按照类型进行装配,如果容器中没有找到相应类型进行匹配,spring则会抛出异常。
autodetect:如果bean提供了默认的构造函数,则使用byType进行装配,如果没有则使用constructor进行装配。
以上内容为博主个人对Spring配置中常用元素的理解,如有不到之处,欢迎各位大神批评指正。
阅读全文
0 0
- Spring配置文件常用元素说明
- Spring配置文件的bean元素,scope属性值说明
- linux常用配置文件说明
- Lighttpd 常用配置文件说明
- webconfig 配置文件常用说明
- WebConfig常用配置文件说明
- Nginx 常用配置文件说明
- spring配置文件applicationContext说明
- spring配置文件说明
- Spring典型配置文件说明
- spring配置文件的说明
- Spring boot 配置文件说明
- Spring常用配置文件
- Spring常用配置文件(转)
- Spring常用配置文件
- .Net配置文件常用配置说明
- .Net配置文件常用配置说明
- .Net配置文件常用配置说明
- 当前日期变成一串数字20170914123216(2017-09-14 12:32:16 )
- hold time的一些思考点
- Java实现:利用栈平衡符号
- 雪花算法golang实现
- Java 两个整数相除保留两位小数,将小数转化为百分数
- Spring配置文件常用元素说明
- laravel5.x下迁移公众号数据
- QT绘制圆弧遇到缺失问题
- Office 365 企业应用以及服务概览 分享记录
- 支付系统项目案例摘要
- sublime调整tab缩进为四个空格方法
- oracle中的RANK()、ROW_NUMBER()、DENSE_RANK()区别和使用
- 1140鸡蛋栈
- LMS100-1000激光雷达学习(二)