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

小课堂

分享人:杨以杰

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

先简单介绍下背景

Spring是一个基于IOC和AOP结构的开源轻量级开发应用框架,Rod Johnson大神是为了解决企业级应用开发复杂性创建的,因此spring也说是J2EE系统的框架

2.知识剖析

Inversion of control

IOC控制反转是Spring的基础,简单说就是创建对象由以前的程序员自己new, 变成了交由Spring创建对象。这就是平常的java开发中, 我们在某个类中需要依赖其它类的方法,通常是new一个依赖类然后再调用类实例的方法,但是 new 的类实例不便于统一管理,耦合性更高; 这个时候IOC的思想就凸显出来了:由 Spring容器来实现这些相互依赖对象的创建、协调工作, 对象只需要关系业务逻辑本身就可以了; 这样理解的话,对象如何得到他的协作对象的责任被反转了。

Dependency Injection

DI 依赖注入 . 简单地说就是拿到的对象的属性,已经被注入好相关属性值了,直接使用即可,当然还可以像上面提到反转,也就是注入一个对象 就像jdbc里面,对象A需要操作数据库,以前首先需要A自己编写代码来获得一个Connection对象, 有了spring我们就只需要告诉spring,A需要一个Connection,在系统运行时,spring会在适当的时候制造一个Connection,注射到 A中,这样就完成了对两个对象之间关系的控制。A需要依赖Connection才能正常运行,而这个Connection是由spring注入到A中的, 依赖注入的名字就这么来的。

3.常见问题

什么是依赖?什么是注入?

4.解决方案

通过编码来看效果

5.编码实战

使用ref;

使用autowire;

6.扩展思考

上面是注入对象行为属性的注解,那么bean对象本身,比如student,school可不可以移出applicationContext.xml 配置文件,也通过注解进行呢?

7.参考文献

1,https://ptteng.github.io/PPT/PPT-java/java_task1_14_SpringIOC.html#/5

2,https://ptteng.github.io/PPT/PPT-java/java-IOC-task1.html#/9

3,http://www.yiibai.com/spring/

4,https://baike.baidu.com/item/spring/85061?fr=aladdin

8.更多讨论

什么是AOP

Thanks

By : 杨以杰