Spring源码(一)】的更多相关文章

一.spring xml配置(不包括AOP,主要了解在初始化及实例化过程中spring配置文件中每项内容的具体实现过程,从根本上掌握spring) <bean>的名字 &,alias,id(名称的转换,绑定) 属性及构造函数参数注入 (注入过程,类型转换) 依赖解析 (显示依赖和自动依赖解析 depends-on,autowire,dependency-check) 继承(extends) 作用域(singleton,prototype,session等,不同作用域的bean的具体实例…
web项目中可以集成spring的ApplicationContext进行bean的管理,这样使用起来bean更加便捷,能够利用到很多spring的特性.我们比较常用的web容器有jetty,tomcat,jboss等,以jetty为例,我们看一下web容器是如何初始化和启动spring的context. 一.Spring容器的加载 在web工程中都有一个web.xml文件,jetty在启动的时候会加载这个配置文件,并且对文件中的各个listener进行加载.ContextLoaderListe…
一.前言     众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了解.开卷有益,在我们空闲的时间里面阅读一下spring的源码,对提升我们的自身能力还是还有很大的帮忙.下面总结一下spring源码导入eclipse的具体的操作. 二.spring的特点 spring的的核心就是IOC(控制反转)和AOP(基于切面的编程) 事务管理方面采用了:声明式事务 为各种主流…
1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cglib,core,lang,objenesis和util. 1.1 asm 关于asm的内幕参见博客: spring源码分析之spring-core asm概述 1.2 cglib 关于cglib的内幕参见博客 cglib源码分析--转 1.3 core 1.4 lang 四个注解接口 /** * In…
获取spring源码: http://repo.springsource.org/libs-release-local/ http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/   从第一个一步步找下去,spring和security都有,包括source源代码 如 spring-aspects-3.2.13.RELEASE.jar对应源码文件为: spring-aop-3…
上一篇分析了BeanFactory体系的2个类,SimpleAliasRegistry和DefaultSingletonBeanRegistry——Spring源码分析——BeanFactory体系之抽象类.类分析(一),今天继续分析. 一.工厂Bean注册支持——FactoryBeanRegistrySupport 废话不多说,直接看我注释的源码: /* * Copyright 2002-2012 the original author or authors. * * Licensed und…
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactory的基本类体系结构(类为主): 上图可与 Spring源码分析——BeanFactory体系之接口详细分析 的图结合分析,一个以接口为主,一个以类为主(PS:Spring的体系结构要分析清楚,不得不曲线救国啊!不然27寸屏幕给我画估计都装不下.). 具体: 1.7层的类体系继承. 2.Abstrac…
今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 FileSystemResource 文件系统资源 FileSystemResource,资源以文件系统路径的方式表示.这个类继承自AbstractResource,并实现了写的接口WritableResource.类全称为public class FileSystemResource extends Ab…
从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架——Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每一开始就是Spring IOC.AOP.BeanFactory这样的Spring典型模块,实在看厌了,这些暂且留到以后.我的想法是,分析就分析别人没分析过的,或者以不同的角度来分析别人分析过的. 可能很多用了Spring多年的程序员对Resource都了解有限,毕竟访问资源一般是搭建web工程框架的…
一.接口描述 spring提供了一个接口类-BeanPostProcessor,我们叫他:bean的加工器,应该是在bean的实例化过程中对bean做一些包装处理,里边提供两个方法 public interface BeanPostProcessor { public abstract Object postProcessBeforeInitialization(Object obj, String s) throws BeansException; public abstract Object…
转载:http://book.51cto.com/art/201311/419081.htm ==========个人理解========================= FactoryBean和BeanFactory的关系[1]FactoryBean:是一个接口,是一个用户自定义实现类实现该接口的A类.当ioc容器初始化完成后.BeanFactory(ioc容器)调用getBean("beanname")的时候,返回的bean不是A类对应的实例,而是A类getObject()方法返…
创建日期:2016.08.19 修改日期:2016.08.20-2016.08.21 交流QQ:992591601 参考资料:<spring源码深度解析>.<spring技术内幕>.传值播客spring教学视频 http://www.cnblogs.com/xing901022/p/4264334.html http://www.cnblogs.com/digdeep/p/4528353.html 一,动态代理.java InvocationHandler实现.Cglib实现 要了…
创建日期:2016.08.06 修改日期:2016.08.07 - 2016.08.12 交流QQ:992591601 参考书籍:<spring源码深度解析>.<spring技术内幕> 参考文章:http://www.cnblogs.com/xing901022/p/4178963.html http://www.myexception.cn/program/1031276.html http://blog.csdn.net/qian_348840260/article/detai…
最近一段时间,粗略的查看了一下Spring源码,对Spring的两大核心和Spring的组件有了更深入的了解.同时在学习Spring源码时,得了解一些设计模式,不然阅读源码还是有一定难度的,所以一些重要的设计模式简单的做了阐述.同时还会简单的加入一些GOF中提到的设计原则.Spring的源码阅读系列,也暂告一段落.下面是就带你走进Spring世界: Spring系列的引子 1)Spring WebApplicationContext初始化与消亡 这一节帮我们了解Spring是如何初始化WebAp…
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下springAOP的工作流程,当我们给出AOP相关的配置以后,直接从IOC容器中拿出来的就是已经加强过的bean.这说明spring在这个过程中一定做了什么. 本章我们就一起来看一下spring是如何完成对bean的增强的,首先我们来看一下,FactoryBean接口中一个方法的定义. public i…
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近工作很忙,但当初打算学习spring源码的事已经基本告一段落,只是一直没时间写这些记录性的文字. 本次鄙人学习spring的源码,有点囫囵吞枣的感觉,其实这样并非就不好,spring作为一个应用平台,自然不是那么好研究透彻的,而且也不太可能有人把spring的源码全部清楚的过上一遍,哪怕是spring的缔造者.不过最主要的…
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章当中我没有提及具体的搭建环境的步骤,一个是不得不承认有点懒,另外一个我觉得如果上章所述的那些环境都还不会搭建的话,研究spring的源码还有些过早. 如果你有兴趣的话,相信已经搭建好了学习研究的环境,接下来就可以进入正题了. 网上也有很多关于spring源码学习的文章以及帖子,讲的也都不错,但是有些可能高估了读者的能力,…
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近已经开始了spring源码的学习,如果有哪位同学或者同道对此也感兴趣,可以跟着我一起学习,互相探讨spring的实质,扒开它的衣服. 正题开始,学习源码第一步自然是配置学习的环境,需要具备以下条件: 1.JDK 1.6 2.开发工具eclipse或者myeclipse,或者你自己熟悉的JAVA开发工具. 3.安装SVN插件…
步骤 安装git或者github客户端 java环境JDK安装(必须是1.8) gradle下载安装(选择的最新版3.1) git clone github上spring源码 import导入project…
准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装.2.下载安装gradle, Spring源码使用gradle构建,下载后解压到任意目录,设置环境变量: GRADLE_HOME且配置Path. 3.下载安装github windows版本 使用github下载Spring源代码 去官网找到Spring在github上的地址,下载到文件系统下就好了. 将Spring 源代码导入eclipse 为Spring每个模块生成ecli…
IoC容器初始化 注意:本次的spring源码是基于3.1.1.release版本 容器:具有获取Bean功能--这是最基本功能,也是BeanFactory接口定义的主要行为,在添加了对于资源的支持之后就是ApplicationContext.对于容器的理解可以是: 在一个HashMap中存放着很多bean 可以解析依赖并初始化bean 所以IoC初始化主要完成以下任务: 定位资源,也就是配置bean的xml 加载资源,将xml中配置的bean解析为BeanDefinition 注册bean,将…
前置条件: 1. 正确安装jdk,并配置好JAVA_HOME.PATH.(我这里安装的是jdk1.8) 2. 正确安装好eclipse.(我的eclipse版本是: Neon Release (4.6.0)) 步骤: 1. 首先去下载spring的源码 https://github.com/spring-projects/spring-framework/releases. 因为我的jdk版本是1.8,所以我这里下载的版本是4.3.2. 下载完成之后解压到本地目录. 2. spring源码的编译…
现在写java后台可以说都能用上spring 在原有的spring基础上,加上自己定制的一些功能,能够使编程变得非常简化. 我也准备在我的毕业设计中写一些spring改造的东西.用来简化开发. 就拿连接数据库来说 最原始的:jdbc自己写 高级一些:mybatis/hibernate来写,配合spring来个整合 我希望能够做到的:整合的代码由我来写好,当然,我的代码也会是一个jar包,在spring启动的时候加载,自动扫描包.开发者只要知道规则就行了(比如mybatis,mappers放哪),…
Spring源码之SimpleAliasRegistry解读(一) 阅读spring源码中org.springframework.core.SimpleAliasRegistry类时发现该类主要是使用map作为alias的缓存,并对接口AliasRegistry进行实现. 在阅读该源码中对hasAlias(String name, String alias):方法产生了疑惑.源码注释中解释该方法的作用是:确定给定的名称是否已注册了给定的别名. 该方法源码如下: public boolean ha…
我们到底能走多远系列(33) 扯淡: 各位:    命运就算颠沛流离   命运就算曲折离奇   命运就算恐吓着你做人没趣味   别流泪 心酸 更不应舍弃   ... 主题: Spring源码阅读还在继续,上篇文章初始化IoC容器:摸我 事实上前面的IOC容器初始化只是建立了BeanDefinition数据映射,而依赖注入的过程是在向Ioc容器索要bean的时候发生的. getBean就是触发依赖注入的地方. 1,下面是AbstractBeanFactory的getBean实现.根据scop进行分…
Spring已经将源码从SVN迁移到了Github,而且也改为基于Gradle的构建来构建项目,它取代了之前的ANT+Ivy系统,所以要构建Spring源码要先安装Github和Gradle. 首先假设各位已经将成功的安装了Github和Gradle了. Gradle下载之后要进行环境变量的配置:类似JDK的配置,这里配置GRADLE_HOME和path. 下面就是下载源码,并编译成eclipse可以识别的工程的步骤. 1.首先打开Github,输入命令cd e://Spring,即定位源码下载…
本例spring源码版本是4.3.0的, 所以jdk需要准备1.8的(不同版本源码要求的jdk不一样) 1.8版本myeclipse10无编译环境,只有运行环境,出现点问题,下载最新版本的Eclipse Jee Neon github Spring 的源码已经从 svn 迁移到 GitHub.而且也改为基于 Gradle 的构建来构建项目.它取代了之前的 Ant+Ivy 系统,所以要构建 Spring 源码环境首先要安装 GitHub 以及 Gradle. 下载 Windows 系统对应的 Gi…
编译问题 spring-4.0.5.release编译是用jdk8编译的,为啥可以运行在jdk7的环境? 源码分析 spring源码分析,由一个点各个击破,比如依赖注入,autowired. spring源码深度解析是从整体上解决,慢慢理清头绪. org.springframework.context.annotation.AnnotationConfigApplicationContext.setBeanNameGenerator(BeanNameGenerator beanNameGener…
Spring源码地址下载: https://github.com/spring-projects/spring-framework/tags >多图详解Spring框架的设计理念与设计模式:http://developer.51cto.com/art/201006/205212_all.htm >Spring 文档: http://tool.oschina.net/apidocs/apidoc?api=Spring-3.1.1…
初始化IoC容器(Spring源码阅读) 我们到底能走多远系列(31) 扯淡: 有个问题一直想问:各位你们的工资剩下来会怎么处理?已婚的,我知道工资永远都是不够的.未婚的你们,你们是怎么分配工资的? 毕竟,对自己的收入的分配差不多体现了自己的现状,以及自己对自己未来有什么样的期许~ 主题: 本人在阅读源码基本参考了<Spring技术内幕:深入解析 Spring架构与设计原理>,很不错的书籍,建议大家阅读. 初始化IoC容器:1,resource定位 2,BeanDefinition载入 3,把…