spring 攻略 - 笔记- 第一章 控制反转和容器

 

IOC - 控制反转:是一个设计原则

用来对组件之间的关系进行解耦,Spring提供了一个IOC的实现, Spring Core-IOC容器来管理组件

 

IOC 是一个通用的设计原则,DI(依赖注入)是具体的设计模式,它体现了IOC的设计原则

 

1.问题:OOP将系统分解成了一组可重用的对象,如果没有一个核心模块来管理(创建和管理)这些对象,这些对象就会仅仅的耦合在一起

1.解决方法:创建一个容器来管理,运行于容器里的对象为组件

1. 实现方法:

1.1使用接口

 

1.1.1问题:如果只使用接口,则对象的实现(注入)是硬编码

1.1.1解决方法:采用容器(管理对象即管理负责组成系统的组件)

 

1.1.2问题:如果采用了容器,那么容器负责创建了需要的所有对象(产生了依赖),并且使用类(Service类)需要容器的实例(和容器产生了依赖,并且通过字符串来说明需要具体使用哪个对象,这里是硬编码

--(1.1.2解决方法:配置文件,将依赖从代码中转移到配置文件,容易修改和维护)

 

1.2问题:采用了容器,则还需要代码从容器中查找出自己所需的组件,如果更换了容器,则这些代码就需要改变

1.2解决方法:采用JEE模式--服务定位器(Service Locator),将查找请求委托给服务定位器

1.2.1 实现:Service--调用具体对象的接口,则具体对象的注入流程:通过 ServiceLocator--Container--具体实现

 

IOC和DI的应用

1.3问题:组件依赖其它组件,需要主动执行查找

1.3解决方法:通过 DI 来,如setter实现,容器主动为每一个组件注入必须的资源(对象),组件不需要主动查找,即Don't call us,we'll call you

不同的DI实现

1.4 setter方法,构造器注入

setter方法缺点:

1). 如果组件使用者忘记注入它所需的依赖,则会发生NullPointException,并且这种情况很难调试

2).setter注入存在安全风险,无法保证setter调用后,再次被调用而更改依赖

构造器注入PS:提供构造器之后,java将不提供默认的构造器

 

1.5使用配置文件配置容器

 1.5.1问题:使用java代码来配置依赖关系,效率低

1.5.2解决方法:基于配置文件

1.5.3实现方法:创建配置文件--容器读取并管理组件

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值