Spring基础(10)——基本Bean装配

本文深入探讨Spring框架中Bean的装配方式,包括XML配置的基本结构、Bean的命名规则、设值注入与构造注入的方法及参数匹配策略等内容。

1、使用XML进行装配

基本结构

<beans>
<bean id="" class="">
<!-- 配置Bean及其协作者-->
<bean>
<!-- 配置更多的bean-->
</beans>
使用Import加载
<beans>
<import resource="service.xml">
<import resource="resource/service.xml">
<import resource="/resource/info/service.xml">
<bean id="" class="">
<!-- 配置Bean及其协作者-->
<bean>
<!-- 配置更多的bean-->
</beans>

Bean命名:

指定一个id属性为Bean的名称,并且id在Ioc中,必须唯一。一个Bean可以有多个名称也就是id,这些id在当前ioc容器中必须唯一。

当基于xml进行配置时,XML的命名规范,id是xml规定的特殊属性,名称必须以字母开始,后面可以是数字、字母、连字符、下划线、句号、冒号等完全结束符,逗号或空格等非完全结束符是非法的。如果客户需要使用特殊符号,可以使用name属性为bean指定一个唯一id,使用name属性,可以为bean指定多个唯一id。指定多个id时,可以在name属性中使用分好、逗号、或者空格进行分割

<bean name="test,#test1;test2 test3" class="com.hema.Test">

为一个bean指定一个名称并不是必须的,如果没有指定,那么容器将为其生成一个唯一的名称。

Spring配置文件不允许出现两个相同id的bean,但是可以出现两个相同name的bean,通过getBean("beanName")获取bean将返回后面定义的bean,因为后面的bean覆盖了前面的同名的bean。

如果id和name都没有指定,Spring将为bean自动指定一个唯一标识符

<bean class="com.hema.Test">

可以通过getBean("com.hema.Test")获取其实例。

设值注入:

首先Spring通过bean的默认构造方法创建一个bean的实例,通过反射机制调用set方法来注入属性值,因此设值注入要求bean必须提供一个默认的构造方法,必须为需要注入的属性提供对应的set方法。

<bean id="animal" class="com.hema.Animal">
  <property name="name"><value>dog</value><property>
</bean>

构造注入:

使用构造注入的优势在于通过构造方法强制依赖关系,有个构造方法的约束,不可能实现一个不完全或完全无法使用的bean。

在只有一个构造方法时,可以通过contructor-arg标签的声明顺序来确定入参顺序,如果有多个具有相同入参的构造方法就不行了。

<bean id="student" class="com.hema.Student">
  <contructor-arg><value>hema</value></contructor-arg>
</bean>

1、按照类型匹配入参:

<bean id="china" class="com.hema.Country">
  <contructor-arg type="java.lang.String"><value>中国</value></contructor-arg>
  <contructor-arg type="int"><value>1949</value></contructor-arg>
</bean>

2、按照索引匹配入参:

<bean id="china" class="com.hema.Country">
  <contructor-arg index="0" value="中国"></contructor-arg>
  <contructor-arg index="1" value="1949"></contructor-arg>
</bean>

3、联合使用类型和索引匹配入参:

<bean id="china" class="com.hema.Country">
  <contructor-arg index="0" type="java.lang.String"><value>中国</value></contructor-arg>
  <contructor-arg index="1" type="int"><value>1949</value></contructor-arg>
</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值