Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

java小课堂

李林朋

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

在面向对象编程中,其基本思路是实现对象之间的低耦合,高内聚,而在传统的Java代码编写中,如果有某个对象A依赖于其他对象B,在使用时,需要先创建所依赖的对象B,传入对象A,然后才能对对象A进行操作,这种方式提高了代码的耦合度,十分不利于重构和维护

采用spring的依赖注入,可以促进代码的松散耦合。借助这种方式,对象无需知道依赖来自何处,或者依赖的实现方式,确保了低耦合[1]

2.知识剖析

传统方式,需要先用new关键词,或者是通过工厂类来创建一个所依赖的对象,传入当前对象

IOC,Inversion of Control,控制反转,不是什么技术,而是一种设计思想,它包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。在Java开发中,Ioc意味着将设计好的对象交给容器控制,而不是传统的在对象内部直接控制。

DI—Dependency Injection,即“依赖注入”

谁依赖于谁:当然是应用程序依赖于IoC容器

  

为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源

  

谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象

  

注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)

spring提供了三种主要的方式来配置

1.在XML中进行显式配置

2.在Java中进行显式配置,JavaConfig

3.隐式的bean发现机制和自动装配

3.常见问题

采用传统方式编写代码,在对象之间存在依赖关系时,会使代码难以维护和重构

4.解决方案

采用spring的IOC

5.编码实战

6.扩展思考

@Component,@Service,@Controller,@Repository的区别

@Service用于标注业务层组件、

@Controller用于标注控制层组件

@Repository用于标注数据访问组件,即DAO组件。

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

7.参考文献

[1].spring In action

8.更多讨论

感谢观看

BY : 李林朋