一. 简介及项目设定
1.1 微热山丘 介绍
warmhill(微热山丘)是一个参考 Spring 实现 IoC、AOP 特性的小项目。
相比于 Spring 庞杂的分类、层层继承、抽象,warmhill(微热山丘) 里都是简单直接的类、方法调用,核心在于简洁地展现实现原理。
1.2 项目设定及限制
有如下的限定:
1. 所有的 bean 都是单例。
2. bean 只有一个唯一的标识符 id
,没有名字、别名。
3. 所有的 bean 都是立即初始化的,不支持延迟初始化。
4. 对于 BeanPostProcessor
的应用是基于声明的先后顺序。
5. 对于 AOP 的切入点,只支持对方法调用的拦截,不细分 Before/After/Around/Throw
等。
6. 对于 AOP 的配置也是基于 bean 定义的,不支持 <aop:config>
标签。
7. 目前只支持从 XML 方式配置 bean 。
8. bean 的属性目前只支持 String
类型和对其他 bean 的引用,只支持 setter 方法的依赖注入。
二. IoC、AOP 基本概念介绍
-
Resource: 资源。可存放在任意位置,只有一个方法:
InputStream getStream();
。 -
BeanDefinition: bean 的定义信息。
-
BeanDefitionLoader: bean 定义加载类,只有一个方法:
List<BeanDefinition> load();
。 -
BeanFactory: bean 工厂,负责根据 bean 定义创建 bean 的实例。