一、基础介绍:
1、在Spring中,组件无需自己负责与其他组件的关联。取而代之的是,容器负责把协作组件的引用给予各个组件。创建系统组件之间协作关系的这个动作是DI的关键,通常被称之为装配;
2、容器可以创建组件,装配和配置组件,以及管理他们的整个生命周期(从new到finalize);
3、Spring提供了多种容器实现,并分为两类 :
Bean工厂(BeanFactory接口),提供了基础的依赖注入支持。
应用上下文(ApplicationContext接口),建立在Bean工厂基础之上,提供了系统架构服务。
4、不像其他工厂模式的实现,他们只是分发一种类型的对象,而Bean工厂是一个通用的工厂,可以创建和分发各种类型的Bean。
二、使用BeanFactory获取Bean(常用实现XmlBeanFactory)
在Spring中有几种BeanFactory的实现。其中最常使用的是org.springframework.beans.factory.xml.XmlBeanFactory,它根据XML文件中的定义装在Bean。
要创建XmlBeanFactory,需要传递一个org.springframework.core.io.Resource实例给构造函数。此Resource对象提供XML文件给工厂。
有以下几种方式配置XML源:
org.springframework.core.io.ByteArrayResource |
org.springframework.core.io.ClassPathResource |
org.springframework.core.io.DescriptiveResource |
org.springframework.core.io.FileSystemResource |
org.springframework.core.io.InputStreamResource |
org.springframework.web.portlet.contentx.PortletContextResource |
org.springframework.web.context.support.ServletContextResource |
org.springframework.core.io.UrlResource |
比如使用FileSystemResource创建一个XmlBeanFactory:
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("c:/piratebean.xml"));
Bean工厂会立即把Bean定义信息载入,但是Bean只有在被需要时才被实例化;只要简单调用getBean()方法,把需要的Bean的名字传入即可。
MyBean myBean = (MyBean) factory.getBean("myBean");
三、使用ApplicationContext获取Bean(三种常用实现)
表面上,ApplicationContext和BeanFactory差不多。两者都是载入Bean定义信息,装配Bean,根据需要分发Bean。
但是,ApplicationContext提供了更多功能:
1、提供了文本信息解析工具,包括对国际化(I18N)的支持。
2、提供了载入文件资源的通用方法,如载入图片。
3、可以向注册为监听器的Bean发送事件。
因此,我们应该更多的使用ApplicationContext,而不是BeanFactory。
注意:二者的关系是ApplicationContext接口扩展于BeanFactory
ApplicationContext的诸多实现中,以下三种经常用到:
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
XmlWebApplicationContext
第一种和第二种的区别在于,ClassPath可以在整个类路径(包括JAR文件)中寻找定义Bean的XML文件;而FileSystem只能在指定路径中寻找。
ApplicationContext使用方式和上面类似:
ApplicationContext context = new FileSystemXmlApplicationContext("c:/pirate.xml");
// or ~
ApplicationContext context = new ClassPathXmlApplicationContext("pirate.xml")
Author:Pirate Leo
Blog:http://blog.csdn.net/pirateleo
Email:codeevoship@gmail.com
转载请注明出处,谢谢。
若有侵权之处请致信告知,本人必将迅速处理。
分享到:
相关推荐
Spring 注解学习手札,个人学习Spring mvc的知识总结
分享Perl_学习手札书籍,供大家学习、参考及交流perl。
NULL 博文链接:https://snowolf.iteye.com/blog/580194
perl学习手札,共同学习,共同进步。希望你能很快掌握perl。
关于作者: 简信昌 “傲尔网”专案经理 博仲法律事务所资讯部门 台北Perl推广组 (Taipei.pm) 召集人 Newzilla召集人 目前专案: Open Source Foundry (OSSF) Newzilla 线上杂志 ...“Perl学习手札”
NULL 博文链接:https://snowolf.iteye.com/blog/583161
NULL 博文链接:https://snowolf.iteye.com/blog/577989
Perl学习手札.chmPerl学习手札.chmPerl学习手札.chm
NULL 博文链接:https://snowolf.iteye.com/blog/588351
NULL 博文链接:https://snowolf.iteye.com/blog/578452
NULL 博文链接:https://snowolf.iteye.com/blog/587602
Perl 学习手札,这本书介绍了perl的基本语法及perl的一些用法,想了解perl的就看一看
hibernate学习手札.z03
Perl 学习手札,好东西
hibernate学习手札.z01
NULL 博文链接:https://snowolf.iteye.com/blog/1628861
1-高级perl编程(黑豹书).pdf 2-Perl_学习手札.pdf
非常著名的perl学习手札(初学者有福了),本文档是精美的PDF版,排版精美,是网络上到现在为止能找到的最好的。 全书共分17个小节,通过讲解实例来学习perl,你可以复制这些代码,然后执行。学习非常方便!
8086汇编学习手札及各章节检测题详细答案。 配套书籍 王爽的汇编
本资料完全来源于网上收集,对于作者并没有做过多的考证,考虑到作者本身,所以保持原作品不变只是略加整理,为用户提供一个方便的浏览方式。