一、IOC的概念
IOC(Inverse of Control )控制反转,原本自身控制自身的权利转移到了其他身上。IOC是一个“协议”,或者理论。需要涉及到代码解耦,设计模式等一些问题考量。
其中包含了两层内容:控制 + 反转。意思明了
后来,IOC由于是种理论需要实战 — 就出现了依赖注入。
DI(Dependency Injection)依赖注入:即调用类让某一接口的实现类的依赖关系有第三方(容器或者协作类)注入,以移除调用类对某一接口实现类的依赖。这里就是将实战的武功秘籍传授了。实现类与类的依赖关系。
IOC容器还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。
二、注入的方式
依赖注入有三种注入方式:
1、通过构造函数注入
2、通过属性注入(常用方式)
3、接口注入
三、如何实现其注入呢?
那就涉及到相关的知识点,比如反射(类装载器 和 反射机制)、资源访问机制
a. 反射(Reflect)
b. 资源装载器
资源,考虑资源的来源。可能是本地的File(jar、zip等),网络的URL(FTP等)。Spring提供的Resource接口比JDK访问资源API更强大个好用。其实就是一种VFS的特例吧。
1. 读取配置文件时,Ant风格资源地址支持3中匹配符:
?:匹配一个字符
*:任意一个字符
**:匹配多层路径
Resource 与 ResourceLoader UML图:
BeanFactory类继承体系:
ApplicationContext主要实现类:
a. ClassPathXmlApplicationContext 从类路径加载配置文件
b. FileSystemXmlApplicationContext 从文件系统加载配置文件
Spring用于启动WebApplicationContext的Servlet和Web容器监听器
org.springframework.web.servlet.DispatcherServlet
org.springframework.web.context.ContextLoaderListener
待续。。。