注意:IOC和AOP不是spring提出的,在spring之前就已经存在,只不过更偏向于理论化,spring在技术层面把这个思想做了很好的实现(java)
1. 什么是IOC
Inversion of Control(控制反转),注意它是一个思想,不是技术实现。
- 传统的开发方式:类A如果需要依赖类B,则需要在类A中new一个类B出来。
- IOC思想下的开发方式:把类的创建、管理、销毁等等全都交给IOC容器(spring框架)来做,需要使用则从IOC容器中取出来(依赖注入方式取)
- 控制:指的是对象创建的权力
- 反转:这个权力给了IOC容器
- IOC和DI的区别
2. 什么是AOP(面向切面编程)
- AOP是OOP的延续, Aspect oriented Programming
- OOP三大特性:封装、继承、多态
- AOP解决问题:在不改变原有方法的,增强横切逻辑代码,根本上解耦合,避免横切代码重复问题
- 横切代码分离
- AOP的主要应用:事务控制,权限校验、日志
3. Spring的核心模块
- spring-core:核心类库,包括资源访问等一些工具类,别的模块都会依赖此模块
- spring-beans:对 Bean 的支持,包括控制反转和依赖注入,核心工厂 BeanFacotry 就在这个模块。
- spring-context:Spring 的上下文,支持数据验证、国际化、事件传播等支持,ApplicationContext就在这里,可以理解为运行时的 Spring 容器。
- 基于上面的这些核心模块,Spring 也提供了很多重要的支持:
- spring-aop:AOP 的支持
- spring-jdbc:jdbc 的支持
- spring-orm: orm 的支持
- spring-webmvc: mvc 的支持
- 等等