spring提供了强大的xml文件支持。在此对其标签进行详细的介绍:
1. < beans >
特点:最顶级元素,包含多个。
结构图:
拥有的属性:
default-lazy-init: 值指定为true/false 默认是false,用于设置< bean >延迟初始化
default-autowire: 取值为no/byName/byType/constructor/。默认为no。控制全体bean采用哪种默认绑定方法
default-destroy-method: 指定管理的bean的销毁方法
default-init-method: 指定管理的bean的初始化方法
统一管理bean,避免重复指定bean的创建规则。
例子:
头文件样式:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd" >
2. < description >
一般是省略的。可以为配置文件添加描述性话语
3.< import >
导入其它配置文件:
例子:
<import resource="simple2.xml"/>
4.< alias >
设置别名。
<alias name="ab" alias="x"/>
<bean id="ab" class=""></bean>
给名为ab的bean设置别名为x,此后可以使用x或者ab访问该bean
5.< bean>
例子:
<bean id="a" class="com.example.demo.xmlparse.Aclass"></bean>
属性:
id :区分beans管理下 的bean的唯一标识。这个是一个非必须的属性,特定的情况下可以省略;
name:指定bean的别名(同alias )。与id相比,name的属性更加灵活可以使用特殊的字符如 ‘ / ’ 还可以通过逗号,空格,冒号分割name
class: 大部分情况下是必须的,指定bean的数据类型,在抽象模板中可以不需要指定class
6. < constructor -arg >
配合bean使用,用于使用构造方式处理对象之间依赖关系。当对象中存在多个构造方法的时候,而且请求参数列表数目,类型不同时候,需要使用内部的属性协助。
type:
用于指定构造对象参数的注入类型,由于在xml配置时候,会将普通的入参默认当做字符串处理,因而在这种情况下也可以使用type指定其类型。避免出错。
<bean id="a" class="com.example.demo.xmlparse.Aclass">
<constructor-arg type="int">
<value>1</value>
</constructor-arg>
<constructor-arg>
<value>2</value>
</constructor-arg>
</bean>
如此处理入参,则获取到的bean结果为:
this bean :2 b:1
如果是不使用type的情况下:
<bean id="a" class="com.example.demo.xmlparse.Aclass">
<constructor-arg >
<value>1</value>
</constructor-arg>
<constructor-arg>
<value>2</value>
</constructor-arg>
</bean>
结构为:
this bean :1 b:2
index:
当类型也一致时候可以使用index指定入参的顺序,控制bean的依赖注入关系。此处不给出具体例子了。需要注意的是使用index的时候起始下标是从0开始的
value
可以作为一个属性写入也可以作为子标签在< constructor-arg >中使用:
<constructor-arg >
<value>1</value>
</constructor-arg>
与
<constructor-arg value="1" > </constructor-arg>
效果是一致的
7.、< property >
此标签用于处理setter依赖关系的关系注入。
<bean id="property" class="com.example.demo.xmlparse.Aclass">
<property name="a" value="2"></property>
<property name="b" value="1"></property>
</bean>
属性:
name : 属性名对应
value: 值
ref: 引用哪个bean
8. < property>与< constructor-arg>中的可配置项
< value> : 可以通过value为主体注入简单数据类型。可以指定String与基本类型+基本类型的包装类型。容器在注入的时候会做适当的转换工作,这个是最底层元素,无法再嵌套别的元素了
< ref> :
使用ref引用容器中的其它对象实例。有三种引用范围可以选择:local,parent,bean;
local只能指定与当前配置对象在同一配置文件下的bean对象
parent只能指定当前容器父容器定义的对象引用
bean均可以指定到。同< value>标签一致,它也是一个底层标签不能内嵌标签
9. < idref >
为当前对象注入所依赖对象的名称,而不是引用,最适合的方式是使用idref,这个标签可以在容器解析配置时候,帮助检查beanName是否存在。
使用范例:
<bean id="idreftry" class="com.example.demo.xmlparse.ABclass">
<property name="a">
<idref bean="x"></idref>
</property>
</bean>
注意:是名称不是引用,此方法注入的值一定是String,而且是已经在容器中托管的bean中的一个beanName
10. 内部bean。
定义的bean是私有的时候使用。
使用示例:
<bean id="innerBeanTry" class="com.example.demo.xmlparse.ABclass">
<constructor-arg>
<bean class="com.example.demo.xmlparse.Aclass">
</bean>
</constructor-arg>
</bean>
因为只供内部使用,所以可以不设置id的值。
11. < list>
对应注入对象类型为list类型及其子类或者数组类型的依赖对象。
<bean id="listTry" class="com.example.demo.xmlparse.ABclass">
<property name="b">
<list>
<value>1</value>
<ref bean="property"/>
<bean class="com.example.demo.xmlparse.Aclass">
<property name="a" value="12"></property>
<property name="b" value="11"></property>
</bean>
</list>
</property>
</bean>
12. < set>
注入一组无序的依赖。对set而言,元素顺序无关紧要。对应注入的依赖是set及其子类的依赖对象。
例子:
<bean id="setTry" class="com.example.demo.xmlparse.ABclass">
<property name="c">
<set>
<value>1</value>
<ref bean="property"/>
<bean class="com.example.demo.xmlparse.Aclass">
<property name="a" value="12"></property>
<property name="b" value="11"></property>
</bean>
</set>
</property>
</bean>
13. < map>
注入map及其子类类型依赖对象,使用该标签。该标签下有子标签< entry>.具体使用例子如下:
<bean id="mapTry" class="com.example.demo.xmlparse.ABclass">
<property name="d">
<map>
<entry key="first key">
<value>first value</value>
</entry>
<entry key="second key">
<ref bean="property