spring中的BeanFactory与ApplicationContext的作用和区别?
作用:1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
a. 国际化支持
b. 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”
c. 事件传递:通过实现ApplicationContextAware接口
3. 常用的获取ApplicationContext的方法:
FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组
ClassPathXmlApplicationContext:从classpath的xml配置文件创建,可以从jar包中读取配置文件
WebApplicationContextUtils:从web应用的根目录读取配置文件,需要先在web.xml中配置,可以配置监听器或者servlet来实现
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这两种方式都默认配置文件为web-inf/applicationContext.xml,也可使用context-param指定配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myApplicationContext.xml</param-value>
</context-param>
public class BeanFactoryTest {public static void main(String[] args) throws Throwable{ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();Resource res = resolver.getResource("classpath:com/baobaotao/beanfactory/beans.xml");System.out.println(res.getURL());BeanFactory bf = new XmlBeanFactory(res);System.out.println("init BeanFactory.");Car car = bf.getBean("car",Car.class);System.out.println("car bean is ready for use!");car.introduce();} }
public class XmlApplicationContextTest {public static void main(String[] args) { //如果配置文件放置在类路径下,用户可以优先使用ClassPathXmlApplicationContext实现类ApplicationContext ctx = new ClassPathXmlApplicationContext("com/baobaotao/context/*.xml");Car car1 = ctx.getBean("car",Car.class); //如果配置文件放置在文件系统的路径下,则可以优先考虑使用FileSystemXmlApplicationContext实现类 // ctx = new FileSystemXmlApplicationContext("D:/masterSpring/chapter3/src/com/baobaotao/context/*.xml"); // Car car2 = ctx.getBean("car",Car.class);} }
ApplicationContext的初始化和BeanFactory有一个重大的区别:BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;而ApplicationContext则在初始化应用上下文时就实例化所有的单实例的Bean。因此ApplicationContext的初始化时间会比BeanFactory稍长一些.
转载于:https://www.cnblogs.com/DreamDrive/p/4094502.html
spring中的BeanFactory与ApplicationContext的作用和区别?相关推荐
- 浅谈Spring中的BeanFactory与FactoryBean
前言 理解FactoryBean是非常非常有必要的,因为在Spring中FactoryBean最为典型的一个应用就是用来创建AOP的代理对象,不仅如此,而且对理解Mybatis核心源码也非常有帮助!如 ...
- [读书笔记]Spring中BeanFactory和ApplicationContext的联系和区别
写在前言 依赖反转是指依赖对象的获得被反转了.依赖控制反转的实现有很多方式,Spring中IOC容器是实现这个模式的载体,它可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对 ...
- Spring系列之beanFactory与ApplicationContext
一.BeanFactory BeanFactory 是 Spring 的"心脏".它就是 Spring IoC 容器的真面目.Spring 使用 BeanFactory 来实例化. ...
- Spring:Spring容器(BeanFactory和ApplicationContext)
Spring的IoC容器是一个提供IoC支持的轻量级容器,IoC容器为管理对象之间的依赖关系提供了基础功能.Spring为我们提供了两种容器:BeanFactory和ApplicationContex ...
- java悲观者不加事务_在spring中,使用事务和不用事务的区别
各位高手大家好,我最近在学习Spring,自己也作了几个例子.但我在开发的过程中发现我使用事务和不使用事务效果都一样,我想问一下两者的区别,谢谢大家:第一种,不使用事务,Spring... 各位高手大 ...
- Spring IoC容器:BeanFactory和ApplicationContext谁才是Spring IoC容器
private static void whoIsIoCContainer(UserRepository userRepository, ApplicationContext applicationC ...
- Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系
在我们日常的开发中,我们经常会用到Filter和Interceptor.有时同一个功能.Filter可以做,Interceptor也可以做.有时就需要考虑使用哪一个比较好.这篇文章主要介绍一下,二者的 ...
- Spring中Model、ModelMap及ModelAndView之间的区别
1. Model(org.springframework.ui.Model) Model是一个接口,包含addAttribute方法,其实现类是ExtendedModelMap. ExtendedMo ...
- spring中的前置处理器和后置处理器区别
背景: SpringIOC容器它会以某种方式,加载配置文件中的 信息,将其解析为一个个的BeanDefinition.之后将BeanDefinition注册到容器之中.Spring IOC容器在实现的 ...
最新文章
- BP as a Vendor and Customer Configuration
- Tomcat介绍及性能优化
- 一个简单的第三方CNN自编码matlab工具箱
- Linux引导过程详解
- append有时加载不出来_关于艾拉浏览器看漫画,有时加载慢的解决方法,你知道了吗...
- 摔跤视频软件测试,Apple Watch 4摔倒检测立功:成功救人一命,网友:马上入手!...
- html js脚本限制 正则,简单谈谈JS中的正则表达式
- 成为Java流大师–第4部分:数据库流
- 【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...
- C#LeetCode刷题之#819-最常见的单词(Most Common Word)
- r语言degseq2_第二次RNA-seq实战总结(3)-用DESeq2进行基因表达差异分析
- 怎么用 Photoshop 把图片变清晰?
- 坦克世界因计算机丢失,坦克世界新版本上线在即,玩家必须知道的几件事。
- (20200328已解决)[dockerfile] debconf: delaying package configuration, since apt-utils is not installed
- win10计算机打开速度慢,win10电脑速度突然很慢怎么处理
- 关于计算机的论文英语2000字,英语论文2000字左右
- 4步用Python搞定客户细分!
- 基于51单片机的万年历(包含闹钟,秒表)实现
- GeoPandas库入门教程
- 问题解决-----如何从windows10向ubuntu传输大数据的文件(大于等于50M)
热门文章
- 记忆化搜索,FatMouse and Cheese
- Web UI 自动化测试环境搭建 (转载自51测试天地第三十九期上)
- UVA - 11732 strcmp() Anyone?左兄弟右儿子trie
- 花点时间了解消息,句柄和窗口
- 全国计算机等级考试题库二级C操作题100套(第41套)
- 粒子文字特效css,CSS3 粒子效果
- php获取flash上传视频文件大小,php解析flash文件(.swf文件)获取其长度和宽度
- 成为优秀程序员应该具备的8个特质
- 浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法
- .NET开源项目小功能组件