【J2EE学习笔记】Spring的核心接口
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它们代表了Spring容器。
BeanFactory
BeanFactory接口负责创建和分发各种类型的Bean。
在Spring中有几种BeanFactory的实现,其中最常用的是org.springframework.bean.factory.xml.XmlBeanFactory。它根据XML文件中的定义装载Bean。
要创建XmlBeanFactory,需要传递一个InputStream对象给构造函数,用来提供XML文件给工厂。
例如:
BeanFactory factory=new XmlBeanFactory(new FileInputStream("applicationContext.xml"));
这行代码告诉BeanFactory从XML文件中读取Bean的定义信息,但是没有实例化Bean。
当getBean()方法被调用的时候,把需要的Bean的名字当作参数传递进去,工厂就会实例化Bean,并使用依赖注入开始设置Bean的属性。
例如:
MyBean myBean=(MyBean)factory.getBean("myBean");
ApplicationContext
ApplicationContext(应用上下文)继承自BeanFactory,表面上看两者功能差不多,都是载入Bean定义信息,装配Bean,根据需要分发Bean,但是ApplicationContext提供了更多功能:
1、应用上下文提供了文本信息解析工具,包括对国际化的支持
2、应用上下文提供了载入文本资源的通用方法,如载入图片
3、应用上下文可以向注册为监听器的Bean发送事件
在ApplicationContext的诸多实现中,有如下三个常用的实现。
ClassPathXmlApplicationContext:从类路径中的XML文件载入上下文定义信息,把上下文定义文件当成类路径资源。
FileSystemXmlApplicationContext:从文件系统中的XML文件载入上下文定义信息
XmlWebApplicationContext:从Web系统中的XML文件载入上下文定义信息
例如:
ApplicationContext applicationContext=new FileSystemXmlApplicationContext("src/applicationContext.xml");
ApplicationContext applicationContext2=new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext applicationContext3=WebApplicationContextUtils.getWebApplicationContext(Request.getSession().getServletContext());
FileSystemXmlApplicationContext和ClassPathXmlApplicationContext的区别是:FileSystemXmlApplicationContext只能在指定的路径中寻找,而ClassPathXmlApplicationContext可以在整个类路径中寻找。
除了ApplicationContext提供的附加功能外,ApplicationContext和BeanFactory另一个重要区别是单实例Bean如何被加载。
ApplicationContext会在上下文启动后预载入所有的单实例Bean,确保当需要的时候它们已经准备好,应用程序不需要等待它们被创建。
上一篇: JS 常用方法汇总
下一篇: java实现zip压缩文件
推荐阅读
-
Spring学习笔记之bean的基础知识
-
Spring核心概念学习笔记
-
iOS学习笔记-143.网络03——自己搭建的后台登陆接口文档
-
Spring学习笔记第二天,Spring基于xml或注解的IOC以及IOC的案例
-
php学习笔记 面向对象中[接口]与[多态性]的应用
-
Vue + Django 2.0.6 学习笔记 8.1 商品详情页的API接口
-
Beginning Spring学习笔记——第11章 使用Spring开发REST风格的Web服务
-
Mule ESB 学习笔记(20)Mule和Spring httpinvoker的整合
-
Spring学习笔记_AOP的cglib动态代理底层实现方式
-
Spring入门学习笔记(2)——基于Java的配置