之前一篇,整体描述了一下 Spring的整体概况和 jar包的介绍. 现在开始进入具体的源码解析,从本篇开始,先介绍spring的ioc容器.之前也看过一些介绍spring源码的, 有的是只讲整体的接口,缺少和源码的结合,有的是一直源码跟进的讲解,由于类的调用太深, 导致看着看着就晕了. 所以自己决定动手写一遍,结合两者的优点. 1,spring ioc容器的整体设计 该图摘自spring技术内幕. 图中的两条线路是主要的两条接口设计线路图. 整体接口系统都是以beanfactory和appli…
一直都在用spring,但是每次一遇到spring深入的问题,就是比较懵的状态.最近花了段时间学习了一下spring源码. 1,spring版本介绍 虽然工作中,一直在用到spring,可能有时候,并不会特别去关注版本号.所以先简单介绍一下,spring的版本. 当前的最新快照版本是5.0.0 稳定版本是4.3.8 2,spring框架概述 就不展开一一介绍每个模块了. 想了解的可以直接去官网了解.就介绍一下常用的,也是大家关心的几个模块. 2.1Core Container 该模块包含 spr…
上一篇介绍了ioc容器的初始化过程,主要完成了ioc容器建立beanDefinition数据映射.并没有看到ioc容器对bean依赖关系进行注入. 接口getbean就是出发依赖注入发生的地方.下面从defaultlistableBeanFactory的基础类abstractBeanFactory入手. getbean最终都会调用到doGetBean protected <T> T doGetBean( final String name, final Class<T> requi…
一. AOP切面源码分析 源码分析分为三部分 1. 解析切面 2. 创建动态代理 3. 调用 源码的入口 源码分析的入口, 从注解开始: 组件的入口是一个注解, 比如启用AOP的注解@EnableAspectJAutoProxy. 在注解的实现类里面, 会有一个@Import(""). 这个@Import("")就是引入的源码实现类. 比如AOP的@Import(AspectJAutoProxyRegistrar.class) 通常, Spring要开启某一个功能,…
本文内容 @Transactional事务使用 @EnableTransactionManagement 详解 @Transactional事务属性的解析 TransactionInterceptor 事务控制 声明式事务使用和原理 声明式的主要步骤 使用@EnableTransactionManagement启用Spring 事务管理支持 使用@Transactional标识需要事务的方法会自动开启事务 注入数据源和事务管理器 下面通过案例演示一下上面的效果. 案例 使用@EnableTran…
//AsyncTask从本质上讲,是对ThreadPool和handler的封装. 在学习线程池相关的知识时,看到书中提到AsyncTask的实现中使用到了ThreadPool,于是把源码翻了出来, 源码并不长,顺便分析了一下.小白挑战,大牛勿喷(好像大牛也不会看到...) 成员变量的解析 我打算先把成员变量分析一下(AsyncTask源码不是很复杂,可以这么做,算是特殊情况吧),算是为后面分析AsyncTask的工作流程做铺垫. 线程池 THREAD_POOL_EXECUTOR //cpu核心…
小伙伴们还在一个一个苦苦寻找各类APP源码吗?此贴集中打包最常用APP的源码,你想得到的APP,这里都有! 想做商城?这里有天猫! 想做同城服务?这里有大众点评! 想做外卖?这里有饿了么! 想做视频?这里有搜狐视频! 想做啥,我都给你! 十一个千万级别APP源码随意处置,不为功与名,只为助你走上人生巅峰! 仿饿了么源码 http://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=638 仿搜狐视频源码分享 http://commu…
# spring MVC cors跨域实现源码解析 > 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. spring MVC自4.2开始添加了跨域的支持. 跨域具体的定义请移步[mozilla](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS)查看 ## 使用案例 spring mvc中跨域使用有3种方式:…
本文承接前文Spring源码情操陶冶-DefaultBeanDefinitionDocumentReader#parseBeanDefinitions,特开辟出一块新地来啃啃这块有意思的骨头 自定义节点的类型 我们常用的可分为spring/springmvc两类 spring常用的节点类型 context类型 context-component-scan-扫描包内的所有class类并注册为beanDefinition到spring上下文 context-property-placeholder-…
承接前文Spring源码情操陶冶-自定义节点的解析,本文讲述spring通过context:component-scan节点干了什么事 ComponentScanBeanDefinitionParser#私有属性 罗列下context:component-scan可填的基础属性 private static final String BASE_PACKAGE_ATTRIBUTE = "base-package"; private static final String RESOURCE…