IOC
Spring IOC 解决的是对象管理和对象依赖的问题。本来我们的对象都是new
出来的,而我们如果使用Spring
则把对象交给「IOC容器」来管理
理论上,我们可以把「IOC容器」也当做是一个「工厂」,使用IOC的好处就是:
-
将对象集中统一管理,便于修改
-
降低耦合度(调用方无需自己组装,也无需关心对象的实现,直接从「IOC容器」取就好了)
Spring提供了四种方式把对象交给「IOC容器管理」:
-
注解
-
XML
-
JavaConfig
-
基于Groovy DSL配置
总的来说:我们以XML配置+注解来装配Bean比较多,其中注解这种方式占大部分。
把对象放到「IOC容器」了以后,对象与对象之间是有关系的,我们需要把对象之间的依赖告诉Spring,让它来帮我们解决掉对象的依赖关系。
「对象之间的关系」很多时候就是A对象里边有B对象的属性。
各种方式来对Bean的定义和注入:
IOC优点:
-
不用自己组装,拿来就用。
-
享受单例的好处,效率高,不浪费空间。
-
便于单元测试,方便切换mock组件。
-
便于进行AOP操作,对于使用者是透明的。
-
统一配置,便于修改
AOP
Spring AOP 解决的是 非业务代码抽取的问题。