|
使用构造器注入
使用属性setter方法注入
使用Field注入(用于注解方式)
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
1.手工装配依赖对象
手工装配依赖对象,在这种方式中又有两种编程方式
在xml配置文件中,通过在bean节点下配置
在java代码中使用@Autowired或@Resource注解方式进行装配
依赖注入--手工装配--XML方式
通过setter方法注入依赖
<bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。
通过setter方法注入依赖
简单bean配置
配置bean的简单属性,基本数据类型和String。
<beanidbeanid="personService" class="com.test.bean.impl.PersonServiceImpl">
<!-- 基本类型,string类型 -->
<propertynamepropertyname="age"value="20"></property>
<propertynamepropertyname="name" value="张无忌"></property>
</bean>
复制代码
通过setter方法注入依赖
引用其它bean
<beanidbeanid="person"class="com.test.bean.Person" />
<beanidbeanid="personService"
class="com.test.bean.impl.PersonServiceImpl">
<!-- 引用类型 -->
<propertynamepropertyname="person" ref="person" />
</bean>
复制代码
内部bean
<beanidbeanid="personService"class="com.test.bean.impl.PersonServiceImpl">
<!-- 内部bean注入 -->
<propertynamepropertyname="personClass">
<beanclassbeanclass="com.test.bean.PersonClass" />
</propert>
</bean>
复制代码
这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。
装配集合
若bean的属性是集合类型,按如下处理:
A、装配List和数组:
<!-- 装配list -->
<propertynamepropertyname="lists">
<list>
<value>list1</value>
<value>list2</value>
<refbeanrefbean="person"/>
</list>
</property>
<!--装配数组 -->
<property name="obj">
<list>
<value>obj1</value>
<value>obj2</value>
<refbeanrefbean="person"/>
</list>
</property>
复制代码B、 装配set: <!--装配set -->
<property name="sets">
<set>
<value>set1</value>
<value>set2</value>
<refbeanrefbean="person"/>
</set>
</property>
复制代码
set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。
装配集合
C、装配map:
<!-- 装配map-->
<propertynamepropertyname="maps">
<map>
<entrykeyentrykey="01">
<value>map01</value>
</entry>
<entrykeyentrykey="02">
<value>map02</value>
</entry>
</map>
</property>
复制代码
map中的<entry>的数值和<list>以及<set>的一样,可以使任何有效的属性元素,需要注意的是key值必须是String的。
D、装配Properties:
<!--装配Properties -->
<property name="props">
<props>
<prop key="01">prop1</prop>
<prop key="02">prop2</prop>
</props>
</property>
复制代码E、设置null: <!--装配null -->
<property name="listnull">
<null/>
</property>
复制代码
通过参数的顺序:
<constructor-argindexconstructor-argindex="0">
<value>张三</value>
</constructor-arg>
<constructor-argindexconstructor-argindex="1">
<value>56</value>
</constructor-arg>
复制代码 |
|