Spring 应用上下文
ApplicationContext 除了IoC 容器角色,还有提供:
面向切面(AOP)
26中所说, BeanFactory就是一个基本的IoC容器, 而ApplicationContext是它的一个超集, 那么这里AOP的特性也是ApplicationContext进行的简化
配置元信息(Configuration Metadata)
比如Environment对象, 外部化配置, 注解,比如@Bean, 都是
ApplicationContext 提供支持
资源管理(Resources)
涉及到一些特性, 比如java标准的一些url, classloading 这些东西的一些特性, 以及后面关于一些新版本.
比如spring 4.2 里面的一些关于协议的扩展等
事件(Events)
是和 IoC 容器补充的一个方面, 能够通过事件的方式驱使一些它的特性.
国际化(i18n)
从这里可以看到 spring 在设计的时候考虑到了国际化这种企业级应用中很常用的东西, 所以我们再写代码的时候,
也要考虑多写配置, 少写硬编码的方式来对页面做优化.
注解(Annotations)
这个如@Autowire实际上是在 BeanFactory 或者 Bean 模块里做支撑的, 但是需要 ApplicationContext 来驱动.
像 @Compoment 和 @ComponentScan, 他们的支持也都是来自于 ApplicationContext
Environment 抽象(Environment Abstraction)
环境主要包含两部分, 一个是配置, 一个是外部配置.
配置 主要走的是 profile, 当我们在测试不同的环境时, 可以根据不同的环境来区分.
外部化配置 主要是为了解决 占位符 的问题, 当然也会解决一些 配置的读取
文档
https://docs.spring.io/spring/docs/5.2.2.RELEASE/spring-framework-reference/core.html#beans-introduction