1.Application基本介绍
1.1.BeanFactory和ApplicationContext的对别
Feature | BeanFactory | ApplicationContext |
---|---|---|
Bean instantiation/wiring —— Bean的实例化和属性注入 | Yes | Yes |
Integrated lifecycle management —— 生命周期管理 | No | Yes |
Automatic BeanPostProcessor registration —— Bean后置处理器的支持 | No | Yes |
Automatic BeanFactoryPostProcessor registration —— BeanFactory后置处理器的支持 | No | Yes |
Convenient MessageSource access (for internalization) —— 消息转换服务(国际化) | No | Yes |
Built-in ApplicationEvent publication mechanism —— 事件发布机制(事件驱动) | No | Yes |
2.ApplicationContext和它的上下辈们
2.1Application的基本介绍
Application是中央接口,他提供了一个概念:重新加载,
Application 提供了如下功能
- 用于访问应用程序组件的 Bean 工厂方法。继承自 ListableBeanFactory 。
- 以通用方式加载文件资源的能力。继承自 ResourceLoader 接口。
- 能够将事件发布给注册的监听器。继承自 ApplicationEventPublisher 接口。
- 解析消息的能力,支持国际化。继承自 MessageSource 接口。
- 从父上下文继承。在子容器中的定义将始终优先。例如,这意味着整个 Web 应用程序都可以使用单个父上下文,而每个 servlet 都有其自己的子上下文,该子上下文独立于任何其他 servlet 的子上下文。
2.2ConfigurableApplicationContext提供了可配置的可能
它是一个支持 SPI 的接口,它会被大多数(如果不是全部)应用程序上下文的落地实现。除了 ApplicationContext 接口中的应用程序上下文客户端方法外,还提供了用于配置应用程序上下文的功能。
ConfigurableApplicationContext 本身扩展了一些方法,但是它一般情况下不希望让咱开发者调用,而是只调用启动(refresh)和关闭(close)方法。注意这个一般情况是在程序运行期间的业务代码中,但如果是为了定制化 ApplicationContext 或者对其进行扩展,ConfigurableApplicationContext 的扩展则会成为切入的主目标。2.3EnvironmentCapable(特定能力)
2.4MessageSource(国际化)
2.5ResourcePatternResolver(根据特定的路径去解析资源文件)
can be checked whether it implements this extended interface too.
它是一个策略接口,用于将位置模式(例如,Ant 样式的路径模式)解析为 Resource 对象。 这是 ResourceLoader 接口的扩展。可以检查传入的 ResourceLoader(例如,在上下文中运行时通过 ResourceLoaderAware 传入的 ApplicationContext )是否也实现了此扩展接口。2.ApplicationContext的实现类们