依赖注入与自动装配
2017-04-25 00:00
267 查看
摘要: 对依赖注入与自动装配进行分析
依赖注入:当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IoC容器来完成,然后注入调用者,因此也称为依赖注入。依赖注入的方式有两种:构造器注入和setter注入。
装配:创建应用对象之间协作关系的行为称为装配。也就是说当一个对象的属性是另一个对象时,实例化时,需要为这个对象属性进行实例化。这就是装配。
自动装配:开发人员不必知道具体要装配哪个bean的引用,这个识别的工作会由spring来完成。与自动装配配合的还有“自动检测”,这个动作会自动识别哪些类需要被配置成bean,进而来进行装配。这样我们就明白了,自动装配是为了将依赖注入“自动化”的一个简化配置的操作。
依赖注入与装配的关系:依赖注入的本质就是装配,装配是依赖注入的具体行为。
装配分为五种:no,default,byName, byType, constructor。
构造注入
setter注入
以下介绍基本类型和集合类型的注入
Integer与String注入
List注入
Set注入
Map注入
Properties注入
依赖注入:当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IoC容器来完成,然后注入调用者,因此也称为依赖注入。依赖注入的方式有两种:构造器注入和setter注入。
装配:创建应用对象之间协作关系的行为称为装配。也就是说当一个对象的属性是另一个对象时,实例化时,需要为这个对象属性进行实例化。这就是装配。
自动装配:开发人员不必知道具体要装配哪个bean的引用,这个识别的工作会由spring来完成。与自动装配配合的还有“自动检测”,这个动作会自动识别哪些类需要被配置成bean,进而来进行装配。这样我们就明白了,自动装配是为了将依赖注入“自动化”的一个简化配置的操作。
依赖注入与装配的关系:依赖注入的本质就是装配,装配是依赖注入的具体行为。
装配分为五种:no,default,byName, byType, constructor。
构造注入
<bean id="service" class="com.abc.InfoService"> <constructor-arg ref="infoDao"></constructor-arg> </bean> <bean id="infoDao" class="com.abc.InfoDao"> </bean>
setter注入
<bean id="service" class="com.abc.InfoService"> <property name="info" ref="infoDao"></property> </bean> <bean id="infoDao" class="com.abc.InfoDao"> </bean>
以下介绍基本类型和集合类型的注入
Integer与String注入
<bean id="dao" class="com.abc.InfoDao"> <property name="id"> <value>1</value> </property> <property name="name"> <value >tom</value> </property> </bean>
List注入
<bean id="service" class="com.abc.InfoService"> <constructor-arg name="info" ref="dao"></constructor-arg> <constructor-arg name="info2" ref="dao"></constructor-arg> <property name="list"> <list> <ref bean="dao" /> <ref bean="dao" /> <ref bean="dao" /> <ref bean="dao" /> </list> </property> </bean> <bean id="dao" class="com.abc.InfoDao"> <property name="id"> <value>1</value> </property> <property name="name"> <value>pioneer</value> </property> </bean>
Set注入
<bean id="service" class="com.abc.InfoService"> <constructor-arg name="info1" ref="dao"></constructor-arg> <constructor-arg name="info2" ref="dao"></constructor-arg> <property name="set"> <set> <bean class="com.abc.InfoDao"> <property name="id"> <value>1</value> </property> <property name="name"> <value>tom</value> </property> </bean> <bean class="com.abc.InfoDao"> <property name="id"> <value>2</value> </property> <property name="name"> <value>kitty</value> </property> </bean> </set> </property> </bean>
Map注入
<bean id="service" class="com.abc.InfoService"> <constructor-arg name="info1" ref="dao"></constructor-arg> <constructor-arg name="info2" ref="dao"></constructor-arg> <property name="maps"> <map> <entry key="one" value="First"></entry> <entry key="two" value="Second"></entry> <entry key="three" value="third"></entry> </map> </property> </bean>
Properties注入
<bean id="service" class="com.abc.InfoService"> <constructor-arg name="info1" ref="dao"></constructor-arg> <constructor-arg name="info2" ref="dao"></constructor-arg> <property name="maps"> <property name="properties"> <props> <prop key="url">htttp://www.google.com.hk</prop> <prop key="username">username</prop> <prop key="password">password</prop> </props> </property> </property> </bean>
相关文章推荐
- Spring依赖注入 — 属性自动装配
- 一个和spring整合的依赖注入的servlet,子类可自动装配依赖Bean
- 用spring的注解建立bean与bean之间的关系组件装配及自动注入依赖对象
- 依赖注入与自动装配
- 控制反转IOC(依赖注入DI),注入类型,自动装配相关注解
- 依赖注入与自动装配
- Spring DI依赖注入,自动装配
- spring ioc容器注入的集中方式,以及属性注入的集中依赖,继承,使用SPEL表达式,ioc容器的生命周期,bean的几种工厂方法配置方式,bean的自动装配
- Spring 注入集合、依赖检查、自动组件扫描、过滤组件自动扫描、自动装配属性
- Spring依赖注入和自动装配
- Spring依赖注入,自动扫描组件,自动装配,注解注入
- 一个和spring整合的依赖注入的servlet,子类可自动装配依赖Bean
- Spring依赖注入 — 属性自动装配
- 框架 day36 Spring3 入门,DI依赖注入,装配bean基于xml/注解, 整合Junit4,配置约束自动提示
- 详解依赖注入与自动装配
- Spring 自动依赖注入优化(primary)
- Spring 自动依赖注入优化(qualifier)
- Spring Bean装配--常用的注入方式和自动装配的配置和实现
- spring IOC入门: IOC属性注入、自动装配
- NO.9 Spring IOC 依赖注入—自动扫描