Spring|IOC、AOP总结
Spring 两个核心就是 IOC(Invest of Control)容器和面向切面编程 AOP。
IOC 是 spring 的 bean 容器,IOC 帮我们项目管理的 bean 的创建和依赖管理,在使用的时候我们只需要使用 xml 或注解指明依赖的对象,剩下的 IOC 会帮我管理。IOC 实现的核心是依赖注入,在初始化 bean 时往往一个对象依赖另一个对象,spring 帮我自动创建依赖对象并把它注入到对象中。IOC 中的对象可以是单例或多例的,但多数是单例的,例如@Service 和@Controller 注解就是单例的对象。通过在 IOC 提前创建好对象,提高了程序的运行速度。
Spring 的另一个核心是 AOP 切面编程,在程序的开发过程中,难免会有大量重复的代码,例如事务的开启和关闭,打印日志等,我们可以把重复的代码提取出来,利用 AOP 技术复用这些代码,这些操作通常在方法执行前可以执行或执行后可以执行。AOP 实现是基于就动态代理的设计思想来实现的,基于 JDK Proxy 或 cglib,选择的依据是对象(代理的方法)是否是实现接口的,对象实现了接口就用 JDK 动态代理,否则就是用 cglib 通过继承的方式实现代理。