Spring笔记
来源:互联网 发布:光子计算机 知乎 编辑:程序博客网 时间:2024/06/06 06:47
一、sping-beans工程核心类
1、DefaultListableBeanFactory:
DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册及加载的默认实现,对于XmlBeanFactory对DefaultListableBeanFactory类进行了扩展,从xml文档读取BeanDefinition,对于注册或者获取bean都是从父类继承的,唯独增加了XmlBeanDefinitionReader类型的reader属性,在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册。
以下的是DefaultListableBeanFactory的继承关系图:
2、XmlBeanFactory:
XmlBeanFactory继承DefaultListableBeanFactory类,从xml文档读取BeanDefinition,注册或者获取bean都是从父类DefaultListableBeanFactory继承的,唯独增加了XmlBeanDefinitionReader类型的reader属性,在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册。
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
资源文件读取,解析及注册的相关类图
主要包括以下几步的处理:
1)通过AbstractBeanDefinitionReader中的方法,来使用ResourceLoader将资源文件路径转换为对应的Resource
2)通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件。
3)通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析
4、容器的基础
BeanFactory bf=new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));
java中资源文件的读取:将不同来源的资源抽象成URL,通过注册不同的handler来处理不同的资源读取逻辑,一般
handler的类型使用不同的前缀来识别。如:fle:,http:,jar:
1)spring对其内部使用到的资源实现了自己的抽象结构:Resource接口来封装底层资源,对于不同来源文件都有相应的Resource实现:文件(FileSystemResource),URL资源(URLSource)
Resource接口继承InputStreamSource接口,InputStreamSource中有抽象方法getInputStream();
Resource resource=new ClassPathResource("beanFactoryTest.xml");
InputStream inputStream=resource.getInputStream();
getInputStream是通过class或者classLoader提供的底层方法getResourceAsStream实现的
public InputStream getResourceAsStream(String name) { URL url = getResource(name); try { return url != null ? url.openStream() : null; } catch (IOException e) { return null; }}
2)XmlBeanFactory
- Spring笔记
- Spring笔记
- Spring笔记
- Spring笔记
- spring 笔记
- Spring笔记
- Spring 笔记
- spring笔记
- Spring 笔记
- Spring笔记
- Spring笔记
- Spring笔记
- Spring笔记
- spring 笔记
- Spring笔记
- Spring笔记
- spring笔记
- Spring笔记
- bzoj 3732: Network (最小生成树+LCA)
- 安装MySQL-Python出现问题“cannot find -lprobes_mysql”解决
- Raft 一致性算法论文译文
- linux使用FIO测试磁盘的iops
- tcp http协议简单区别
- Spring笔记
- HBase 二次笔记
- JS 打地鼠 游戏开发视频教程
- 安卓开发基础篇——Anroid四大组件之Service
- java算法-指数运算(大数运算)
- tjdsc
- OpenWRT基本知识整理
- java笔记
- 常见的魔术方法