当前位置: java基础教程 > 30-spring > 阅读正文

spring的IOC/DI

2021.6.1.   422 次   848字

spring框架, 有两大核心部分, 分别是

  • spring的 IOC/DI
  • spring的 AOP

其中, IOC和DI虽然不是同一个概念, 却是同一个概念的不同角度描述

IOC: 控制反转

spring的IOC, 也称为控制反转, 控制反转是从容器角度描述的

springIOC解决了什么问题呢? 首先我们来看一下下面的代码, 分析下oop的依赖

//登录验证
//1.获取用户名和密码
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
//2.根据参数, 调用dao查询数据库, dao实现类判断true or false
boolean loginSucess = new LoginDaoImpl().loginCheck(uname,upwd);

上面的代码中, 我们必须先写上LoginDaoInpl这个类, 并且实现这个方法, 否则编译不通过, 传统的oop代码中, 代码互相依赖很强, 也就是耦合度很高

springIOC的目的是为了代码解耦, 在上面这个例子中, 你可以理解为controller层(业务层)直接调用了bean(组件), springIOC则禁止coltroller直接调用bean, 我们把bean交给spring容器管理, 而controller从容器中获取bean, 这样一来编译期依赖就会减少, 至少编译能通过, 这也意味着代码从逻辑上更容易理解.

springIOC通过容器作为中间对象, 减少了controller和bean之间的耦合度

DI: 依赖注入

springIOC算是一种思想, 而springDI是它的一种简单实现方式

我们如何把bean交给spring容器管理? DI则是这样的实现方式, 类似于Maven这样的pom.xml导入依赖坐标的方式, DI同样使用xml的方式把bean注入到容器中, 这也就是依赖注入

为了简化依赖注入, 有更简单的注解注入方式

综上, springIOC/DI其实表达的是同一个思想, 但它们是在不同角度的理解.

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群