【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,确保当需要的时候它们已经准备好,应用程序不需要等待它们被创建。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值