- 浏览: 282071 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
狼子六:
已经开始用了
Java 枚举7常见种用法 -
相约的旋律:
方法一下面的"public static fianl ...
Java 枚举7常见种用法 -
kiddy2012:
...
[转载]程序员装B指南 -
fancy105:
写得很好,简单明了双全面!
Java 枚举7常见种用法 -
he_wen:
请问一下 G1算法是否在线上使用了?
Garbage First(G1) 日志分析工具
以下是看代的码随笔,想到哪写到哪,没有组织逻辑,见谅见谅。
以FileSystemXmlApplicationContext为例,看看BeanFactory的体系结构。
类图(点击放大):
从上往下:
- BeanFactory:BeanFactory:Spring的Bean容器最顶层的接口,定义了Ioc容器的基本规范。实现这个接口的Ioc容器都会持有一些BeanDefinition和一个唯一的字符串形式的名字。
- HierarchicalBeanFactory:HierarchicalBeanFactory继承BeanFactory并扩展使其支持层级结构。getParentBeanFactory()方法或者父级BeanFactory,containsLocalBean(String name)方法查看当前BeanFactory是否包含给定名字的Bean,不会递归想父级查找。
- ListableBeanFactory:同样扩展BeanFactory使其支持迭代Ioc容器持有的Bean对象。注意如果ListableBeanFactory同时也是HierarchicalBeanFactory,那么大多数情况下,只迭代当前Ioc容器持有的Bean对象,不会在体系结构中想父级递归迭代。具体情况请看API说明。
- ResourceLoader:Spring提供资源的根接口。在Spring Ioc中,资源被Resource引用,获得Resource对象,说明获得了资源的访问。Resource提供资源的抽象,具体资源可是从URL,classpath,file等地方获得。
- ResourcePatternResolver:ResourcePatternResolver是对ResourceLoader的扩展,其支持模式匹配的资源。如:classpath*:表示匹配路径下所有的资源。
- DefaultResourceLoader:ResourceLoader的默认实现,可以单独使用,也可以通过扩展使其支持特殊的资源,如:FileSystemResourceLoader,ClassPathXmlApplicationContext等。
- ApplicationEventPublisher:封装事件发布,通知事件监听者此Application的事件。
- MessageSource:处理Spring 中的消息,支持i18n和参数化消息。另外其子类ReloadableResourceBundleMessageSource支持不重启JVM刷新消息。
- EnvironmentCapable:实现此接口的容器将支持上下文环境。在Spring Ioc容器中,都是支持上下文环境的。
- ApplicationContext:从上图来看,ApplicationContext继承了上面描述的所有接口,因此ApplicationContext是一个接口集合,提供所继承接口的功能。另外,ApplicationContext在启动后是只读的,但是如果ApplicationContext实现类支持reload,也可以刷新这个ApplicationContext。
- Lifecycle:对BeanFactory提供生命周期支持。另外其他任何对象都可以实现Lifecycle接口开支持开始/结束控制。注意Lifecycle接口只支持顶层对象,其他的Lifecycle将被忽略。
- DisposableBean:DisposableBean提供了在销毁Ioc容器的时候释放资源。
- ConfigurableApplicationContext:提供对Ioc容器的配置的支持。包括设置父级容器,设置上下文环境,刷新容器,注册关闭容器钩子等。
- AbstractApplicationContext:AbstractApplicationContext是Ioc容器的抽象实现,这里实现了大部分的功能:消息,事件,刷新容器,生命周期等。AbstractApplicationContext采用模板方法模式,把一部分实现推迟到子类。
- AbstractRefreshableApplicationContext:提供多线程同时刷新容器支持,每次刷新都会产生一个内部BeanFactory(DefaultListableBeanFactory)。另外,子类要实现loadBeanDefinitions方法来正确加载Bean定义。
- Aware:Aware是个标记接口,实现这个接口的对象提供通知Spring容器功能。具体个通知动作来子类中定义。
- BeanNameAware:Aware的子接口,当设置BeanName的时候,创建通知。
- InitializingBean:这个接口作用是当Bean对象的属性都被设置完成或,可以立即做一些自定义的动作。令一个替代方案是设置init-method。
- AbstractRefreshableConfigApplicationContext:提供对容器的一些特殊设置:setConfigLocation,setBeanName,setId等。
- AbstractXmlApplicationContext:从XML读取Bean定义的容器,这个容器实现了loadBeanDefinitions方法,从XML资源中获得Bean定义。
- FileSystemXmlApplicationContext:标准的从文件系统读XML的Bean定义容器。getResourceByPath方法返回文件系统资源。
说了这么多的BeanFactory,还有一个重量级的没有说:DefaultListableBeanFactory
DefaultListableBeanFactory包含了Ioc容器的重要内容,很多容器都会用的它。如AbstractApplicationContext.refersh()方法就会销毁内部的容器并重新创建一个DefaultListableBeanFactory作为起内部表示。DefaultListableBeanFactory则直接继承它成为从XML读取资源的Ioc容器。
在DefaultListableBeanFactory有一个ConcurrentHashMap保存了Bean的定义。
/** Map of bean definition objects, keyed by bean name */ private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>();另外附上DefaultListableBeanFactory的层级结构图:
评论
2 楼
ol_beta
2012-10-12
云之遥 写道
用idea导出的类结构么,这个真不错诶..
我用myeclipse只能导出自己写的类的类图
我用myeclipse只能导出自己写的类的类图
是的,导出类图非常简单。右键想要导出类-->Diagrams 就直接生产关系了。
而且生产的图可以查看源码,显示字段和方法等。
1 楼
云之遥
2012-10-11
用idea导出的类结构么,这个真不错诶..
我用myeclipse只能导出自己写的类的类图
我用myeclipse只能导出自己写的类的类图
发表评论
-
Java压缩/解压缩二进制文件
2013-02-08 13:56 5676在Java中提供Deflater和Inflater工具类来 ... -
java常用并发工具介绍
2013-02-06 23:22 1566本文主要介绍的工具包括: CountDownLa ... -
Garbage First(G1) 日志分析工具
2012-12-22 22:35 2138G1介绍:http://softbeta.iteye.com/ ... -
Spring源码阅读——Ioc初始化过程
2012-11-20 21:52 1215以web项目启动为例,介绍一下Ioc容器的初始化。 下面这个 ... -
Spring源码阅读——获得bean
2012-10-20 20:57 3124已XmlWebApplicationContext为例,从ge ... -
生成随机数组
2012-09-11 20:23 10161.要求生成一组n位的数字,0-9...(n个)之间的稠密集合 ... -
O(1)复杂度获得栈中的极值
2012-09-09 23:47 1196设计一个栈,O(1)复杂度实现入栈,出栈,栈中最大值,栈中最小 ... -
ubuntu12.04上编译openjdk7
2012-06-13 15:31 4823获取源码 从openjdk代码仓库获取(比较慢) ... -
jinfo 查看、设置JVM参数
2012-04-25 15:36 5097用法: # jinfo -h Usage: ... -
一些参数,弥补CMS(Concurrent Mark-Sweep)收集器的缺点
2012-03-28 21:11 1636CMS缺点:http://softbeta.iteye ... -
[转载]PrintCompilation 参数解释
2012-03-27 13:59 1503英文不好,所以就不翻译了: b Blocking co ... -
《Head First 设计模式》读书笔记
2012-03-01 11:30 15081.策略模式(Strategy) ... -
解决jrobin图像中文乱码
2012-02-14 23:31 1117目前发现一种方法可以解决,做个标记。 利用字体: RrdG ... -
Java内存管理——垃圾收集概念及特点
2012-02-03 12:37 1013碎碎念,介绍Java内存管 ... -
[转载]hotspot源码(JDK7)
2012-01-19 19:25 1494源码结构图,方便理解: ├─agent ... -
跨平台获取java进程id(Process ID in Java)
2012-01-18 19:20 9086原创地址:http://blog.lichengwu.cn/ ... -
了解CMS(Concurrent Mark-Sweep)垃圾回收器
2011-12-27 20:13 120151.总体介绍: CMS(Concurrent Mark- ... -
fail-fast
2011-12-13 19:34 1014fail-fast:快速失败 一般情况下,在对集合进行迭代( ... -
利用VisualVM监视远程JVM
2011-11-17 20:06 4605VisualVM介绍 VisualVM是集成了多个JDK命令 ... -
[转载]Java 虚拟机指令
2011-10-28 20:18 7600x00 nop 什么都不做 0x01 acon ...
相关推荐
NULL 博文链接:https://ylxy3058.iteye.com/blog/2223489
Spring中ApplicationContext和beanfactory区别.rar
spring 源码 解析 pdf BeanFactory
Spring的BeanFactory的接口的中文解释
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
BeanFactory是用于访问Spring Bean容器的根接口,是一个单纯的Bean工厂,也就是常说的IOC容器的顶层定义,各种IOC容器是在其基础上为了满
Spring教程 1 Spring框架概述 3 Spring是什么? 3 Spring的历史 4 Spring的使命(Mission Statement) 4 Spring受到的批判 4 Spring包含的模块 5 总结 6 Spring的IoC容器 6 用户注册的例子 7 面向接口编程 8 (用户...
NULL 博文链接:https://lgd-java2eye.iteye.com/blog/756599
源码Spring注解驱动开发第29讲——注册完AnnotationAwareAspectJAutoProxyCreator后置处理器之后,就得完成BeanFactory的初始化工作了
spring之beanfactory 的一些基本知识与其关系使用
Spring的IoC容器之BeanFactory[定义].pdf
主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring 大量引入了Java 的Reflection机制,通过动态调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory,以此作为其依赖注入机制的实现基础。org.springframework.beans包中包括了这些核心...
对BeanFactory的相关所有接口的功能的关键点进行了总结描述,中文版本
春天的音符 Spring原始中文注释 BeanFactory接口继承 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean
可被eclipse直接导入的Spring源码,Spring的BeanFactory类
提供了Spring容器的支持,扩展了BeanFactory,提供了Spring中Bean生命周期的支持,在bean创建完成之后, 也是由该模块负责来维护bean和bean之间的依赖关系。常用的ApplicationContext核心接口也是该模块中所支持的;...
spring3中实例化BeanFactory的3中方法
rar包内含有spring2.5.6源码,解压即可使用 源代码分析,是一件既痛苦又快乐的事情,看别人写的代码是通过的,但当你能够看明白的时候,相信快乐也会随之而来,为了减少痛苦,更快的带来快乐,在这里希望通过这篇...
NULL 博文链接:https://bjameng.iteye.com/blog/1468057