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容器监听器
待续。。。