SpringIOC简单介绍
Java小课堂
分享人:方广辉
1.背景介绍
2.知识剖析
3.常见问题
4.扩展思考
5.编码实战
6.参考文献
7.更多讨论
1. 背景介绍
软件系统中的对象就像齿轮一样,协同工作,但是互相耦合,一个零件不能正常工作,整个系统就崩溃了。这是一个强耦合的系统。齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础。对象之间耦合度过高的系统,必然会出现牵一发而动全身的情形。
为了解决对象间耦合度过高的问题,软件专家MichaelMattson提出了IOC理论,用来实现对象之间的“解耦”。
2.知识剖析
基本概念
读取配置文件
设值注入
构造注入
IOC(Inversion of Control)即“控制反转”,是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。
由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器。
2.常见问题
什么是依赖注入?
它们之间有什么关系?
依赖注入(DI)就是将实例变量传入到一个对象中去
如果 Class A 中,有Class B的实例,则称Class A和Class B就有一个依赖关系
控制反转是一种思想
依赖注入是一种设计模式
IoC框架使用依赖注入作为实现控制反转的方式
依赖注入方式
1、setter方法
2、构造器方法
3、自动装配与注解注入
3.编码实战
Bean创建及实例化
依赖注入方式
4.扩展思考
Bean的作用
Singleton作用域
Bean的作用域是指spring容器创建Bean后的生存周期即由创建到销毁的整个过程。之前我们所创建的所有Bean其作用域都是Singleton,这是Spring默认的,在这样的作用域下,
每一个Bean的实例只会被创建一次,而且Spring容器在整个应用程序生存期中都可以使用该实例。因此之前的代码中spring容器创建Bean后,通过代码获取的bean,无论多少次,都是同一个Bean的实例。
prototype作用域 它代表每次获取Bean实例时都会新创建一个实例对象,类似new操作符。
request作用域 关于request作用域,对于每次HTTP请求到达应用程序,Spring容器会创建一个全新的
Request作用域的bean实例,且该bean实例仅在当前HTTPrequest内有效,整个请求过程也只会使用相同的bean实例,因此我们可以根据需要放心的更改所建实例的内部状态,而其他请求HTTP请求则创建新bean的实例互不干扰,当处理请求结束,request作用域的bean实例将被销毁。
Session作用域 每当创建一个新的HTTP Session时就会创建一个Session作用域的Bean,并该实例bean伴随着会话的存在而存在。
6.参考文献
百度,博客
.更多讨论
今天的分享就到这里啦,欢迎大家提问和探讨!
@Autowired和@Resources的区别是什么?
@Autowired默认按类型查找bean,用名字查找需要配合@Qualifier使用
@Resources有两种查找方式byname,bytype.默认byname,如果没有匹配name,按照bytype查找
@Resources(name="")仅通过name查找
DI注入有哪些方式啊
setter
构造器
自动装配
注解注入
静态的和简单工厂方法有什么区别
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
不修改代码的话,是无法扩展的。
工厂方法
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
在同一等级结构中,支持增加任意产品。