Spring学习笔记(8)——依赖注入
2017-07-15 10:27
190 查看
spring依赖注入
使用构造器注入
使用属性setter方法注入
使用Field注入(用于注解方式)
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
1.手工装配依赖对象
手工装配依赖对象,在这种方式中又有两种编程方式
* 在xml配置文件中,通过在bean节点下配置
* 在java代码中使用@Autowired或@Resource注解方式进行装配
依赖注入--手工装配--XML方式
通过setter方法注入依赖
<bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。
通过setter方法注入依赖
*简单bean配置
配置bean的简单属性,基本数据类型和String。
通过setter方法注入依赖
*引用其它bean
*内部bean
这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。
*装配集合
若bean的属性是集合类型,按如下处理:
A、装配List和数组:
<!-- 装配list -->
<property name="lists">
<list>
<value>list1</value>
<value>list2</value>
<ref bean="person"/>
</list>
</property>
<!--装配数组 -->
<property name="obj">
<list>
<value>obj1</value>
<value>obj2</value>
<ref bean="person"/>
</list>
</property>
B、装配set:
<!--装配set -->
<property name="sets">
<set>
<value>set1</value>
<value>set2</value>
<ref bean="person"/>
</set>
</property>
set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。
*装配键值对
C、装配map:
<!-- 装配map-->
<propert yname="maps">
<map>
<entry key="01">
<value>map01</value>
</entry>
<entry key="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-arg index="0">
<value>张三</value>
</constructor-arg>
<constructor-arg index="1">
<value>56</value>
</constructor-arg>
通过构造函数注入依赖
<!--通过参数的类型 -->
<constructor-arg type="java.lang.Integer">
<value>56</value>
</constructor-arg>
<constructor-arg type="java.lang.String">
<value>张三</value>
</constructor-arg>
使用构造器注入
使用属性setter方法注入
使用Field注入(用于注解方式)
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
1.手工装配依赖对象
手工装配依赖对象,在这种方式中又有两种编程方式
* 在xml配置文件中,通过在bean节点下配置
* 在java代码中使用@Autowired或@Resource注解方式进行装配
依赖注入--手工装配--XML方式
通过setter方法注入依赖
<bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。
通过setter方法注入依赖
*简单bean配置
配置bean的简单属性,基本数据类型和String。
<bean id="personService" class="com.test.bean.impl.PersonServiceImpl"> <!-- 基本类型,string类型 --> <property name="age"value="20"></property> <property name="name" value="张无忌"></property> </bean>
通过setter方法注入依赖
*引用其它bean
<bean id="person" class="com.test.bean.Person" /> <bean id="personService" class="com.test.bean.impl.PersonServiceImpl"> <!-- 引用类型 --> <property name="person" ref="person" /> </bean>
*内部bean
<bean id="personService"class="com.test.bean.impl.PersonServiceImpl"> <!-- 内部bean注入 --> <property name="personClass"> <bean class="com.test.bean.PersonClass" /> </property> </bean>
这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。
*装配集合
若bean的属性是集合类型,按如下处理:
A、装配List和数组:
<!-- 装配list -->
<property name="lists">
<list>
<value>list1</value>
<value>list2</value>
<ref bean="person"/>
</list>
</property>
<!--装配数组 -->
<property name="obj">
<list>
<value>obj1</value>
<value>obj2</value>
<ref bean="person"/>
</list>
</property>
B、装配set:
<!--装配set -->
<property name="sets">
<set>
<value>set1</value>
<value>set2</value>
<ref bean="person"/>
</set>
</property>
set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。
*装配键值对
C、装配map:
<!-- 装配map-->
<propert yname="maps">
<map>
<entry key="01">
<value>map01</value>
</entry>
<entry key="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-arg index="0">
<value>张三</value>
</constructor-arg>
<constructor-arg index="1">
<value>56</value>
</constructor-arg>
通过构造函数注入依赖
<!--通过参数的类型 -->
<constructor-arg type="java.lang.Integer">
<value>56</value>
</constructor-arg>
<constructor-arg type="java.lang.String">
<value>张三</value>
</constructor-arg>
相关文章推荐
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
- Spring.NET学习笔记6——依赖注入(应用篇) Level 300
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
- Spring 4 学习笔记-依赖注入(一)
- Spring学习笔记(8)——依赖注入
- Spring 学习笔记一 hello world
- Spring学习笔记-IOC概念篇
- 【SSH学习笔记】整合spring3-struts2的小项目(二)
- Spring学习笔记-注入实战篇
- Spring Boot学习笔记-错误处理及自定义
- [spring入门学习笔记][spring的IoC原理]
- 不错的Spring学习笔记(转)
- 携程 Apollo 配置中心 | 学习笔记(三) 自定义Spring Boot项目通过配置中心启动项目
- Spring学习笔记一: Bean工厂(BeanFactory )与应用上下文(ApplicationContext)BeanFactory
- Spring 学习笔记(12)—— AOP 基础
- Spring学习笔记之Spring与JDBC整合
- Spring事务的学习笔记
- spring MVC学习笔记(二) springMVC.xml配置文件解析
- Spring boot 和 mybatis 学习笔记3--动态sql
- spring 学习笔记