spring XML文件使用详解

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值