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。
- <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>
用户评论