网站建设实训报告册,网站后台密码文件,书荒小说阅读器是哪个网站做的,自己制作动漫的软件文章目录类图包目录不同国际化强大的事件机制#xff08;Event#xff09;底层资源的访问延迟加载常用容器类图 包目录不同
spring-beans.jar 中 org.springframework.beans.factory.BeanFactoryspring-context.jar 中 org.springframework.context.ApplicationContext
国际…
文章目录类图包目录不同国际化强大的事件机制Event底层资源的访问延迟加载常用容器类图 包目录不同
spring-beans.jar 中 org.springframework.beans.factory.BeanFactoryspring-context.jar 中 org.springframework.context.ApplicationContext
国际化
BeanFactory 是不支持国际化功能的因为 BeanFactory 没有扩展 Spring 中 MessageResource接口。相反由于 ApplicationContext 扩展了 MessageResource 接口因而具有消息处理的能力i18N。
强大的事件机制Event
基本上牵涉到事件Event方面的设计就离不开观察者模式ApplicationContext 的事件机制主要通过ApplicationEvent 和 ApplicationListener 这两个接口来提供的和 Java swing 中的事件机制一样。即当ApplicationContext 中发布一个事件时所有扩展了 ApplicationListener 的 Bean都将接受到这个事件并进行相应的处理。
底层资源的访问
ApplicationContext 扩展了 ResourceLoader资源加载器接口从而可以用来加载多个Resource而 BeanFactory 是没有扩展 ResourceLoader。对 Web 应用的支持与 BeanFactory 通常以编程的方式被创建ApplicationContext 能以声明的方式创建如使用ContextLoader。当然你也可以使用 ApplicationContext 的实现方式之一以编程的方式创建 ApplicationContext实例。
延迟加载 BeanFactroy 采用的是延迟加载形式来注入 Bean 的即只有在使用到某个 Bean 时(调用getBean())才对该 Bean 进行加载实例化。这样我们就不能发现一些存在的 spring 的配置问题。而 ApplicationContext 则相反它是在容器启动时一次性创建了所有的 Bean。这样在容器启动时我们就可以发现 Spring 中存在的配置错误。 BeanFactory 和 ApplicationContext 都支持 BeanPostProcessor、BeanFactoryPostProcessor 的使用。两者之间的区别是BeanFactory 需要手动注册而ApplicationContext 则是自动注册。可以看到ApplicationContext 继承了 BeanFactoryBeanFactory 是 Spring 中比较原始的Factory它不支持 AOP、Web 等 Spring 插件。而 ApplicationContext 不仅包含了 BeanFactory的所有功能还支持 Spring 的各种插件还以一种面向框架的方式工作以及对上下文进行分层和实现继承。
BeanFactory 是 Spring 框架的基础设施面向 Spring 本身而 ApplicationContext 面向使用Spring 的开发者相比 BeanFactory 提供了更多面向实际应用的功能几乎所有场合都可以直接使用 ApplicationContext而不是底层的 BeanFactory。
常用容器
BeanFactory 类型的有 XmlBeanFactory它可以根据 XML 文件中定义的内容创建相应的 Bean。 ApplicationContext 类型的常用容器有
ClassPathXmlApplicationContext从 ClassPath 的 XML配置文件中读取上下文并生成上下文定义。应用程序上下文从程序环境变量中取得。FileSystemXmlApplicationContext由文件系统中的 XML 配置文件读取上下文。XmlWebApplicationContext由 Web 应用的 XML 文件读取上下文。例如我们在 Spring MVC使用的情况。