依赖注入的三种方式:
1、set注入:使用setxxx()的方式赋值
赋值默认使用的是set方法,依赖注入的底层是通过反射实现的。
<bean id="s1" class="com.yao.spring.di.Student">
<property name="id" value="10055"></property>
<property name="name" value="张三三"></property>
<property name="age" value="23"></property>
<property name="sex" value="男"></property>
</bean>
2、通过构造器注入:使用构造方法赋值
<bean id="s2" class="com.yao.spring.di.Student">
<constructor-arg value="10086"></constructor-arg>
<constructor-arg value="李四"></constructor-arg>
<constructor-arg value="24"></constructor-arg>
<constructor-arg value="女"></constructor-arg>
</bean>
注意:如果的顺序与构造方法的参数顺序不一致时,则需要通过type或者index或name来指定。
3、p命名空间注入
注意:先要引入命名空间
进行赋值的代码如下:
<bean id="s4" class="com.yao.spring.di.Student" p:id="10033" p:name="赵六" p:age="26" p:sex="男" p:teacher-ref="teacher"></bean>
<bean id="teacher" class="com.yao.spring.di.Teacher">
<property name="tid" value="10000"></property>
<property name="tname" value="小明"></property>
</bean>
简单类型(基本类型+String):p:属性名=“属性值”
引用类型:p:属性名-ref=“引用的id”
集合注入
<!-- list集合,集合元素为字面量 -->
<bean id="t1" class="com.yao.spring.di.Teacher">
<property name="tid" value="0000"></property>
<property name="tname" value="小红"></property>
<property name="cls">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
</bean>
<!-- list集合,集合元素为引用类型 -->
<bean id="t2" class="com.yao.spring.di.Teacher">
<property name="tid" value="10002"></property>
<property name="tname" value="小章"></property>
<property name="student">
<list>
<ref bean="s1"/>
<ref bean="s2"/>
<ref bean="s3"/>
</list>
</property>
</bean>
<!-- map集合 -->
<bean id="t3" class="com.yao.spring.di.Teacher">
<property name="tid" value="10003"></property>
<property name="tname" value="小wang"></property>
<property name="bossMap">
<map>
<entry>
<key>
<value>1003</value>
</key>
<value>老王</value>
</entry>
<entry>
<key>
<value>1004</value>
</key>
<value>老无</value>
</entry>
</map>
</property>
</bean>
<!-- 在命名空间中增加util,即可使用util:list作为一个list的bean,供其他对象引用 -->
<bean id="t4" class="com.yao.spring.di.Teacher">
<property name="tid" value="1004"></property>
<property name="tname" value="王老师"></property>
<property name="student" ref="students"></property>
</bean>
<util:list id="students">
<ref bean="s4"/>
<ref bean="s5"/>
</util:list>
<!-- 数组,集合元素为引用类型 -->
<bean id="t5" class="com.yao.spring.di.Teacher">
<property name="tid" value="1004"></property>
<property name="tname" value="送老师"></property>
<property name="stuarr">
<array>
<ref bean="s1"/>
<ref bean="s2"/>
<ref bean="s3"/>
</array>
</property>
</bean>
<!-- set集合,集合元素为引用类型 -->
<bean id="t6" class="com.yao.spring.di.Teacher">
<property name="tid" value="1004"></property>
<property name="tname" value="送老师"></property>
<property name="stuset">
<set>
<ref bean="s1"/>
<ref bean="s2"/>
<ref bean="s3"/>
</set>
</property>
</bean>
<!-- s1 s2 s3 是定义的一些bean的id -->