spring——IOC控制反转(一)
一、spring之IOC
1、
IOC(控制反转:Inverse of Control ),又称作DI依赖注入,是一种重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的 Spring 框架的核心。
2、
依赖注入:是指 在运行期,由外部容器动态地将依赖对象注入到组件中。
依赖注入让Bean与Bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
二、依赖注入的方式
1、属性注入
<bean id="p1" class="com.mao.spring.model.People"><property name="id" value="1001"/><property name="name" value="张嘉译"/><property name="age" value="30"/><property name="motto" value="我就是神"/></bean>
2、构造器类型注入,索引注入,类型和索引混用
<!-- 通过构造器注入一个bean:类型 --> <bean id="p2" class="com.mao.spring.model.People"><constructor-arg type="Integer" value="1223"/><constructor-arg type="String" value="张海阳"/><constructor-arg type="int" value="78"/><constructor-arg type="String" value="我爱睡觉"/></bean><!-- 通过构造器注入一个bean:索引 --><bean id="p3" class="com.mao.spring.model.People"><constructor-arg index="0" value="1222"/><constructor-arg index="1" value="张大喵"/><constructor-arg index="2" value="老子要吃肉"/><constructor-arg index="3" value="30"/></bean><!-- 通过构造器注入一个bean:索引和类型混合使用,起始位置是 0 --><bean id="p4" class="com.mao.spring.model.People"><constructor-arg index="0" type="int" value="1003" /><constructor-arg index="2" type="Integer" value="25" /><constructor-arg index="1" type="String" value="唐敏" /></bean>
3、工厂注入,动态和静态工厂
<!-- 通过动态工厂注入一个bean,但是需要提前创建工厂类,而且要提供构建bean的方法 --><bean id="peopleFactory" class="com.mao.spring.util.PeopleFactory" /><!-- 通过上述动态peopleFactory工厂,构建bean --><bean id="p5" factory-bean="peopleFactory" factory-method="createPeople" /><!-- 通过静态的工厂注入 --><bean id="p6" class="com.mao.spring.util.PeopleFactory" factory-method="getPeople" />
三、注入参数
这是被注入的bean
<bean id="p7" class="com.mao.spring.model.People" ><property name="id" value="15151" /><property name="name" value="众人皆知" /><property name="age" value="15" /><property name="dog" ref="dog"/></bean>
1、ref参考方式注入
<bean id="dog" class="com.mao.spring.model.Dog"><property name="name" value="哈士奇" /></bean>
2、内部bean的注入
<bean id="p8" class="com.mao.spring.model.People"><property name="id" value="1515" /><property name="name" value="张玄凌" /><property name="age" value="56" /><property name="dog" ><bean class="com.mao.spring.model.Dog"><property name="name" value="阿拉斯加" /></bean></property></bean>
3、内部bean的空值注入
<bean id="p9" class="com.mao.spring.model.People"><property name="id" value="1564" /><property name="name" value="张子凡" /><property name="age" value="26" /><property name="dog"><null></null></property></bean>
4、级联属性:必须自己new一个dog对象
<bean id="p10" class="com.mao.spring.model.People"><property name="id" value="15412" /><property name="name" value="鹿林旋" /><property name="age" value="45" /><property name="dog.name" value="泰迪" /><!-- 使用级联操作,必须手动实例化bean中得dog对象 --></bean>
5、集合属性类型
private List<String> hobbies=new ArrayList<String>();
private Set<String> loves=new HashSet<String>();
private Map<String,String> works=new HashMap<String,String>();
private Properties addresses=new Properties();
<bean id="people6" class="com.xdkj.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><property name="dog" ref="dog1"></property><property name="hobbies"><list><value>唱歌</value><value>跳舞</value></list></property><property name="loves"><set><value>唱歌2</value><value>跳舞2</value></set></property><property name="works"><map><entry><key><value>上午</value></key><value>写代码</value></entry><entry><key><value>下午</value></key><value>测试代码</value></entry></map></property><property name="addresses"><props><prop key="address1">aaaaa</prop><prop key="address2">bbbbb</prop></props></property></bean>
注:其中的id名的话可以根据自己的需要改动,我从之前写的demo拼接而来
三、自动装配
1、通过配置 default-autowire 属性,Spring IOC 容器可以自动为程序注入 bean;默认是 no,不启用自动装配;default-autowire 的类型有 byName,byType,constructor;
2、byName:通过名称进行自动匹配;
要求Dog对象的名字dog必须跟bean.xml中Dog的id相同。
3、byType:根据类型进行自动匹配;
在bean.xml中只要有一个Dog类型的对象存在就能够自动注入,但是只能有一个
4、constructor:和 byType 类似,只不过它是根据构造方法注入而言的,根据类型,自动注入;
跟byType类似,不需要处理bean的名字
5、建议:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误;
spring——IOC控制反转(一)相关推荐
- Spring IOC(控制反转)思想笔记
Spring IOC(控制反转)思想笔记 IOC控制反转基本理念就是将程序控制权从程序员手中交给用户自定义,从而避免了因为用户一个小需求的变化使得程序员需要改动大量代码. 在这里插入图片描述 案例 如 ...
- Spring IOC(控制反转)思想笔记
Spring IOC(控制反转)思想笔记 IOC控制反转基本理念就是将程序控制权从程序员手中交给用户自定义,从而避免了因为用户一个小需求的变化使得程序员需要改动大量代码. 案例 如果按照之前javaw ...
- 【Java从0到架构师】Spring - IoC 控制反转、DI 依赖注入
IoC 控制反转.DI 依赖注入 Spring 简介 Spring 基本使用 - IoC 容器 依赖注入 (Dependency Injection) 基于 setter 的注入 - 自定义对象 be ...
- spring ioc控制反转
一. 什么是spring,它能够做什么? Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBean来完成以前只可能 ...
- Spring IOC(控制反转)详解及示例
控制反转--Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...
- 详解spring的IOC控制反转和DI依赖注入
转载 详解spring的IOC控制反转和DI依赖注入 2018-06-05 15:45:34 jiuqijack 阅读数 2945 文章标签: spring IOC控制反转 DI依赖注入 更多 分类专 ...
- Spring的控制反转(IOC)和依赖注入(DI)具体解释
Spring的控制反转(IOC)和依赖注入(DI)具体解释 首先介绍下(IOC)控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制器就有应 ...
- Spring底层控制反转解耦合(IOC)
简单的例子解释IOC控制反转进行解耦合 一.相关概念 (1)解耦合 解耦合就是把程序中互相不相关或有限相关的模块分割开来,把不同模块互相之间的关系用接口进行准确定义,解耦前,两个模块之间共享所有信息: ...
- Spring框架中IoC(控制反转)的原理
一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.即软件系统中对象之间的耦合,对 ...
最新文章
- 《数据科学家养成手册》第五章---矛盾的世界笔记
- 从MegaEase看云原生
- 模板页显示Excel数据Gridview增删改查
- ASP.NET实现微信功能(2)(服务号高级群发)
- centos安装时卡住不动_转子流量计转子或指针停在某一位置不动的原因及处理方法...
- 【Linux网络编程】TCP 和 UDP 数据报格式详解
- asp.net menu Operation aborted
- Redis 实战之主从复制、高可用、分布式
- [react-router] React-Router怎么设置重定向?
- C#.Net工作笔记003---异步编程async await_在开发中的使用经验_随时更新
- 京瓷打印机1025默认管理员密码_京瓷2235默认登录密码_动漫台
- 《动手学深度学习》学习总结
- mac自带工具的抠图方法
- 挑战与机遇,RPA人才为何如此抢手?
- ZOJ 1655 Transport Goods
- 致初级软件开发人员并自勉
- 业务运营支撑系统 BOSS(Business Operation Support System)。
- 安全合规--40--基于欧美法律法规的企业隐私合规体系建设经验总结(四)
- 计算机图形学专业 国内大学排名,虚拟现实应用技术专业大学排名 2020全国排行榜...
- NodeMCUESP8266学习笔记汇总