Spring源码从开始到放弃(一)
参考《Spring技术内幕》分析。
github上面有spring的源码(https://github.com/spring-projects/spring-framework)
spring最核心两个模块有IOC和AOP。
spring IOC容器设计中有几个基础的概念:
1、BeanFactory,这个系的容器只实现容器的最基本功能。下图为BeanFactory的结构。
2、ApplicationContext应用上下文,这是作为容器的高级形态存在,在简单容器的基础上增加了许多面向框架的特性,同时对应用环境做了适配。根据ApplicationContext的继承关系可以看出,ApplicationContext除了提供了容器的基本功能外,还提供了一些附加服务:支持不同的信息源(扩展MessageSource,支持国际化),访问资源(继承ResourceLoader和Resourceshang1,可以从不同的地方得到Bean资源),支持应用事件(继承接口ApplicationEventPublisher)
3、BeanDefinition,Spring通过定义BeanDefinition来管理基于Spring的应用中的各种对象以及它们之间的相互依赖关系。其中可以看到定义了Bean的信息。
4、FactoryBean,这不是简单的Bean,而是一个能产生或者修饰对象生成的共产Bean,它的实现与设计模式中的工厂模式和修饰器模式类似
Spring源码从开始到放弃(一)的更多相关文章
- 剑指Spring源码(二)
这是春节后的第一篇博客,我在构思这篇博客的时候,一度想放弃,想想要不要换个东西写,因为毕竟个人水平有限,Spring源码实在博大精深,不是我这个菜的抠脚的菜鸡可以驾驭的,怕误人子弟,还有就是源码分析类 ...
- Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md
写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ...
- Spring源码分析之——导入spring-framework源代码到Eclipse
本人最近想要研究spring的源代码,但当要导入spring sub project到Eclipse里面去的时候遇到了不少麻烦(其实都怪自己想当然). 找到spring-framework的gitHu ...
- Spring源码 之环境搭建
1.安装gitHub 在官网https://desktop.github.com/下载githubsetup.exe,在线安装总是出错,试了几次后不成功就放弃了.不知道是不是网络的原因. 后来在网上找 ...
- Spring源码分析(一):从哪里开始看spring源码(系列文章基于Spring5.0)
概述 对于大多数第一次看spring源码的人来说,都会感觉不知从哪开始看起,因为spring项目源码由多个子项目组成,如spring-beans,spring-context,spring-core, ...
- 我该如何学习spring源码以及解析bean定义的注册
如何学习spring源码 前言 本文属于spring源码解析的系列文章之一,文章主要是介绍如何学习spring的源码,希望能够最大限度的帮助到有需要的人.文章总体难度不大,但比较繁重,学习时一定要耐住 ...
- 首发!Alibaba内部:Spring源码培训课件笔记曝光!
本文包含的内容 Spring占有的市场 阅读源码的重要性 阅读源码困难度 课件笔记的主要内容 Spring占有的市场 先来简单说一下现在各个企业常用并与Spring相关的: ssh = spring ...
- spring源码:学习线索(li)
一.spring xml配置(不包括AOP,主要了解在初始化及实例化过程中spring配置文件中每项内容的具体实现过程,从根本上掌握spring) <bean>的名字 &,alia ...
- spring源码:web容器启动(li)
web项目中可以集成spring的ApplicationContext进行bean的管理,这样使用起来bean更加便捷,能够利用到很多spring的特性.我们比较常用的web容器有jetty,tomc ...
随机推荐
- 禁止IE7的页面缩放功能
注册表键 HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Zoom 下, 设置DWORD 值 ZoomDisabled 等于 1. 如 ...
- MFC的CListCtrl双击获取单元格的行列
首先要把ClistCtrl设置为整选中模式和网格模式 SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); 重写方法如下: void CAl ...
- zeroclipboard解决跨域问题
ZeroClipboard.setDefaults({ moviePath: "//d2glos6gx2bw40.cloudfront.net/C8QpR9/images/flash/Zer ...
- [Jobdu] 题目1507:不用加减乘除做加法
题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为两个整数m和n(1<=m,n<=100 ...
- C# 文件与二进制互转数据库写入读出
//这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDia ...
- Memcached安装以及PHP的调用
Memcached安装以及PHP的调用 [南京·10月17日]OSC源创会开始报名:Swift.大型移动项目构架分享 » 一:安装libevent 由于memcached安装时,需要使用libeven ...
- Logstash日志字段拆分grok
参考和测试网站:http://grokdebug.herokuapp.com 例如:test-39.dev.abc-inc.com Mon Apr 24 13:53:58 CST 2017 2017- ...
- json中把非json格式的字符串转换成json对象再转换成json字符串
JSON.toJson(str).toString()假如key和value都是整数的时候,先转换成jsonObject对象,再转换成json字符串
- Git中保存用户名和密码
每次操作都需要输入用户名和密码感觉很繁琐,解决方法,在本地的工程文件夹的.git下打开config文件添加: [credential] helper = store 再输入一次用户名密码后就可 ...
- LinQ的简单使用
1.LinQ to Sql类(NET Language Integrated Query (LINQ) ) LINQ定义了大约40个查询操作符,如select.from.in.where以及order ...