bean方法注入
<!--构造函数注入 bean方法注入
使用的标签constructor-arg
标签出现的位置:bean标签内部
标签中的属性
type:用于指定要注入的数据的数据类型,同时改数据类型也是构造函数中某个或某些函数
的类型
index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值,索引的位置是
从0开始
name:用于指定给构造函数中指定名称的参数赋值常用
=====================以上三个用于指定给构造函数中那个参数赋值
value:用于提供基本类型和String类型的数据
ref:用于指定其他bean类型数据。他指的就是在spring的IOC核心容器中出现过的
bean对象
优势:
在获取bean对象时,注入数据时必须的操作,否则对象无法创建
弊端:
改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供
-->
<bean id="AccountServcie" class="cn.lz.service.impl.AccountServiceImpl">
<constructor-arg name="name" value="test"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="birthday" ref="now"></constructor-arg>
</bean>
<!--配置一个日期对象-->
<bean id="now" class="java.util.Date"></bean>
set方法注入
<!--set方法注入 更常用的方式
涉及的标签:property
出现的位置:bean标签内部
标签的属性
name:用于指定注入时所调用的set方法名称
value:用于提供基本类型和String类型的数据
ref:用于指定其他bean类型数据。他指的就是在spring的IOC核心容器中出现过的bean对象
优势:
创建对象时没有明确的限制,可以直接使用默认构造函数
弊端:
如果有某个成员必须有值,则获取对象时有可能set方法没有执行(或者是无法保证一定注入)
-->
<bean id="AccountServcie2" class="cn.lz.service.impl.AccountServiceImpl2">
<property name="name" value="爱马仕"></property>
<property name="age" value="21"></property>
<property name="birthday" ref="now"></property>
</bean>
复杂类型的注入/集合类型的注入(用于List结构集合注入或用于Map结构集合注入的标签)
<!--复杂类型的注入/集合类型的注入
用于List结构集合注入的标签
list array set
用于Map结构集合注入的标签:
map props
结构相同,标签可以互换
-->
<bean id="AccountServcie3" class="cn.lz.service.impl.AccountServiceImpl3">
<property name="myStrs">
<array>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</array>
</property>
<property name="mylist">
<list>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</list>
</property>
<property name="myset">
<set>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</set>
</property>
<property name="mymap">
<map>
<entry key="testA" value="AAA"></entry>
<entry key="testB">
<value>BBB</value>
</entry>
</map>
</property>
<property name="myproperties">
<props>
<prop key="testC">CCC</prop>
<prop key="testD">DDD</prop>
</props>
</property>