Spring 中的 IOC 和 AOP
IOC :控制反转
控制反转,就是将创建对象的主动权由我们自己转移到 Spring 容器中,并且由容器根据配置文件去创建实例和管理各个实例之间的关系,对象与对象之间松散耦合,也利于功能的复用。即 IOC 让对象的创建不用去 new 了,可以由 Spring 根据我们提供的配置文件自动生产,我们需要的时候,直接从 Spring 容器中获取就行了,这就是控制反转的思想。
Spring 的 IOC 有三种注入方式:构造器注入,setter 方法注入,根据注解注入。
AOP :面向切面编程
面向切面编程,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装成为一个可重用的模块,这个模块就称为 “切面” (Aspect)。
Spring AOP 使用的动态代理,就是 AOP 框架不回去修改字节码,而是每次运行是在内存中临时为方法生成一个 AOP 对象,这个 AOP 对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调对象的方法。
AOP 中的动态代理主要有两种方式:JDK 动态代理和 CGLIB 动态代理。
AOP 实例使用:如权限控制、事物管理,记录日志等公用操作处理。