刚学习Spring的时候,听得最多的就是【IOC】和【AOP】这两个术语。一开始接触会想这是啥玩意,云里雾里。什么控制反转、依赖注入、面向切面编程。完全不知道在搞啥、、、
最开始接触到IOC的时候,折腾了一大堆的玩意,结果就是在管【创建对象】的事???逗我呢/我直接new
一个对象出来不香吗?
有这种想法就是典型的[代码写得少了,想的多了]
我们写代码不仅仅是实现功能,实现完了功能后,我们还得对写过得代码进行维护。如果代码写得烂,到时候维护得成本就会很高。

Spring IOC 解决的是对象管理和对象依赖的问题。

本来我们的对象都是new出来的,而我们如果使用Spring则把对象交给【IOC容器】来管理。
IOC容器:我们可以把它理解为一个工厂,我们把对象都交由这个工厂来管理,包括对象的创建和对象之间的依赖关系等等。等我们要用到对象的时候,就从这个工厂里边取出来。
控制反转:就是指把对象的控制权给其它了,这儿就交给IOC容器了/让IOC容器来替我们管理对象。是一种设计模式或者编程思想。
依赖注入:更多指的是【控制反转】这个思想的实现方式:对象无需自行创建或管理它们的依赖关系,一栏关系将被自动注入到需要它们的对象当中去。

最简单的理解【依赖注入】和【控制反转】:本来我们的对象都是【由我们自己】new出来的,现在我们把这个对象的创建权限和对象之间的依赖关系交由【IOC容器】来管理。

Spring AOP 解决的是非业务代码的抽取的问题。