欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android Spring依赖注入(1)

来源: 开发者 投稿于  被查看 44945 次 评论:159

Android Spring依赖注入(1)


使用构造器注入

使用属性setter方法注入

使用Field注入用于注解方式)

注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。

1.手工装配依赖对象

手工装配依赖对象,在这种方式中又有两种编程方式

在xml配置文件中,通过在bean节点下配置

在java代码中使用@Autowired或@Resource注解方式进行装配

依赖注入--手工装配--XML方式

通过setter方法注入依赖

<bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。

通过setter方法注入依赖

简单bean配置

配置bean的简单属性,基本数据类型和String。

  1. <beanidbeanid="personService" class="com.test.bean.impl.PersonServiceImpl"> 
  2. <!-- 基本类型,string类型 --> 
  3. <propertynamepropertyname="age"value="20"></property> 
  4. <propertynamepropertyname="name" value="张无忌"></property>                         
  5. </bean> 

通过setter方法注入依赖

引用其它bean

  1. <beanidbeanid="person"class="com.test.bean.Person" /> 
  2. <beanidbeanid="personService"   
  3. class="com.test.bean.impl.PersonServiceImpl"> 
  4. <!-- 引用类型 --> 
  5. <propertynamepropertyname="person" ref="person" /> 
  6. </bean> 

内部bean

  1. <beanidbeanid="personService"class="com.test.bean.impl.PersonServiceImpl"> 
  2. <!-- 内部bean注入 --> 
  3. <propertynamepropertyname="personClass"> 
  4. <beanclassbeanclass="com.test.bean.PersonClass" /> 
  5. </propert> 
  6. </bean> 

这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。

装配集合

若bean的属性是集合类型,按如下处理:

A、装配List和数组:

  1. <!-- 装配list --> 
  2. <propertynamepropertyname="lists"> 
  3.   <list> 
  4.     <value>list1</value> 
  5.     <value>list2</value> 
  6.     <refbeanrefbean="person"/> 
  7.   </list> 
  8. </property> 
  9. <!--装配数组 --> 
  10. <property name="obj"> 
  11.   <list> 
  12.     <value>obj1</value> 
  13.     <value>obj2</value> 
  14.     <refbeanrefbean="person"/> 
  15.   </list> 
  16. </property> 

B、 装配set:

  1. <!--装配set --> 
  2. <property name="sets"> 
  3.    <set> 
  4.     <value>set1</value> 
  5.     <value>set2</value> 
  6.     <refbeanrefbean="person"/> 
  7.   </set> 
  8. </property> 

set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。

装配集合

C、装配map:

  1. <!-- 装配map--> 
  2. <propertynamepropertyname="maps"> 
  3. <map> 
  4. <entrykeyentrykey="01"> 
  5. <value>map01</value> 
  6. </entry> 
  7. <entrykeyentrykey="02"> 
  8. <value>map02</value> 
  9. </entry> 
  10. </map> 
  11. </property> 

map中的<entry>的数值和<list>以及<set>的一样,可以使任何有效的属性元素,需要注意的是key值必须是String的。

D、装配Properties:

  1. <!--装配Properties  --> 
  2. <property name="props"> 
  3. <props> 
  4. <prop key="01">prop1</prop> 
  5. <prop key="02">prop2</prop> 
  6. </props> 
  7. </property> 

E、设置null:

  1. <!--装配null --> 
  2. <property name="listnull"> 
  3. <null/> 
  4. </property> 

通过参数的顺序:

  1. <constructor-argindexconstructor-argindex="0"> 
  2. <value>张三</value> 
  3. </constructor-arg> 
  4. <constructor-argindexconstructor-argindex="1"> 
  5. <value>56</value> 
  6. </constructor-arg> 


用户评论