IoC装配流程
- ResoureLoader
从硬盘中读取配置文件,并使用Resource表示这个配置文件; - BeanDefinitionRegistry将读取到的配置文件进行解析,并将每一个解析为BeanDefinition,并保存到BeanDefinitionRegistry中;
- BeanFactoryPostProcessor主要实现如下两件事:
- 对使用占位符的标签进行解析,得到最终的配置值,对一些半成的BeanDefinition对象进行加工处理并得到成品的BeanDefinition。
- 对BeanDefnition对象进行扫描,通过Java反射机制找出所有属性编辑器的Bean,并自动将它们注册到PropertyEditorRegistry中。
- 从BeanDefinitionRegistry中取出加工后的BeanDefinition,并调用InstantiationStrategy着手进行Bean实例化的工作;
- 用BeanWrapper对Bean的属性进行设置。
外部属性文件
引用外部属性文件有两个显而易见的好处:
1. 便于维护;
2. 便于部署。
使用外部属性文件通常会需要加密,一般加密分成对称(DES)和非对称(MD5)两种。
国际化
- ResourceBundleMessageSource允许用户通过beanName指定一个资源名或通过beanNames指定一组资源名。
- ReloadResourceBundleMessageSource与ResourceBundleMessageSource的唯一区别在于它会定时刷新资源文件,不必重启应用程序。
容器事件
- 事件源
- 事件侦听表注册表
- 事件广播器