Spring两个核心解决思想方案解析
- IOC (Inverstion Object Control)控制反转 / DI (Dependency Injected) 依赖注入
- AOP(Aspect Oriented Program) 面向切面编程
IOC和DI:反转控制和依赖注入
其思想是把创建对象的工作交给Spring来完成.,应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源,反转资源获取的方向,这种行为也被称为查找的被动形式。
Spring 提供了两种类型的 IOC 容器实现
BeanFactory: IOC 容器的基本实现
ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口
BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 Application而非底层的 BeanFactory
ApplicationContext的主要的实现类:
- ClassPathXmlApplicationContext:从类路径下加载配置文件
- FileSystemXmlApplicationContext:从文件系统中夹杂配置文件
- WebApplicationContext:专门为Web应用准备的,它会从Web配置的根目录加载配置文件完成初始化工作,并且把当前初始化完成的工厂(上下文)的引用存放到ServletContext中。
ApplicationContext初始化上下文时会实例化所有的单例的Bean
IOC容器获取Bean对象流程:
实例化Spring工厂(IOC容器)---- 在IOC容器读取配置文件和并创建要维护的单例的实体Bean,创建过程注入Bean的属性(DI)---- 获取Bean执行操作
AOP:面向切面编程