spring源码
BazingaLyncc
这个作者很懒,什么都没留下…
展开
-
浅析Spring 事务(二十) 走进spring事务
废话不多说,我们先搭建一个简单的spring声明式事务的小demodemo的背景:用户有两部分信息,第一部分就是用户的详细信息,第二部分就是用户的职业信息,当新增保存用户的时候,必须保存好用户的详细,否则就全部不保存,但如果保存用户的时候失败的时候,用户对应的职业可以保存,我们假设职业和用户不是强相关的先定义对象模型:User.javapackage org.stu原创 2016-03-29 09:38:37 · 1493 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring IoC源码(九)了解BeanNameAware
官方给出的解释:实现该接口的bean会意识到自己在beanfactory的的名字,注意虽然这并不值得推荐一个对象依赖它的名字,因为名字只是这个bean的一个脆弱的依赖或者一个额外的配置,也有可能这个bean的名称只是用于Spring API的一个不必要的依赖这个接口表面上的作用就是让实现这个接口的bean知道自己在spring容器里的名字,而且听官方的意思是这个接口更多的使用在spring的框架代码中,实际开发环境应该不建议使用,因为spring认为bean的名字与bean的联系并不是很深,(的确,抛开原创 2016-03-11 16:34:22 · 1998 阅读 · 1 评论 -
做一个合格的程序猿之浅析Spring IoC源码(十)Spring Bean的初始化顺序
①首先执行的是构造函数②然后执行的BeanNameAware这个接口中的方法③然后执行的是BeanFactoryAware这个接口中的方法④执行InitializingBean接口中的afterPropertiesSet的方法⑤执行我们在xml中定义的init-method这个方法⑥最后执行的是BeanFactoryPostProcessor这个方法这个执行结果我们可以清晰的了解spring的初始化流程,但你可以看出BeanPostProcessor并没有初始化,这是为什么呢?原创 2016-03-12 13:12:00 · 3705 阅读 · 5 评论 -
做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析之一
经过上面几节的简单介绍我们了解了spring的一些组件,现在我们来分析一下AbstractApplicationContext中的refresh()这个核心方法吧~用我们上一节的代码,debug进入refresh方法:public void refresh() throws BeansException, IllegalStateException { synchronized (原创 2016-03-12 14:21:38 · 6327 阅读 · 3 评论 -
做一个合格的程序猿之浅析Spring IoC源码(一)分析前的准备和思考
首先,大家都知道Spring是一个框架,是一个容器框架,所谓容器,就是一个可以存放东西的“器皿”,跟我们生活中的水桶,碗,奶粉瓶是一样的器皿。 不同的是存放在这个“器皿”可能不是实体,却是一个抽象的东西,这些东西是什么呢,大家可以这样想,IoC(Inversion of Control)控制反转,我们控制了什么,反转了什么? 我们控制的当然是一个个对象,就是我们一个个在代码里面的原创 2016-03-08 18:39:35 · 7529 阅读 · 12 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十四) 分析ProxyFactoryBean
最基本的实现有三个,AspectJProxyFactory.java ,ProxyFactory.java ProxyFactoryBean这三个,他们的父类ProxyCreatorSupport只是给了他们一些通用的AOP的实现,最为核心的就是怎么生成代理对象就是在该方法中实现的,如图ProxyCreatorSupport.java核心代码:原创 2016-03-24 15:20:52 · 7594 阅读 · 6 评论 -
做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记1
上次分析refresh这块spring IoC的时候,时间比较仓促,只是debug了部分源码,大家分析起来不是很好~今天我们还是先总结一下吧~spring在实例化bean的时候,根据bean实现的接口不同,bean的实例化也是有先后顺序的由于此块代码太多,贴图给大家的学习的效果不好,现在以spring 3.2.5源代码为例,大家再一份“温故”一下,然后“知新”原创 2016-03-14 15:35:18 · 2517 阅读 · 4 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十五) 分析JdkDynamicAopProxy的invoke方法
上一节我们已经分析了Proxyfactorybean如何去生成一个目标对象的代理的,这一节我们将浅析一下代理的基于JDK动态代理核心的回调方法invoke的源代码JdkDynamicAopProxy.java文件是实现了AopProxy和InvocationHandler这2个接口的先讲AopProxy这个接口,如图所示,AopProxy接口就定义了2个方法我们再看原创 2016-03-25 10:43:45 · 9371 阅读 · 2 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十六) 分析ProxyFactory
其实说实话。通过上面2节的讲解,Spring AOP可以算分析完了,因为我们已经知道AOP最为核心的2个组件都不是ProxyFactoryBean,AspectJProxyFactory,亦或者是这节我们讲解的ProxyFactory,这三个基层的类,做的最重要的事都是去维护几个变量,有了这几个变量就可以做很多事,原因:①这个变量中定义了advice,定义了通知,即定义了干什么②定原创 2016-03-25 14:41:48 · 1860 阅读 · 1 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十七) Spring AOP开发大作战
前面AOP几节我们已经浅析了Spring 是如何实现AOP的,和AOP的底层原理,那么今天我们先来看看我们开发环境中是怎么运用AOP的好了,我们先定义一个简单的应用场景,在web开发中,mvc模式中,我们的有些核心service的某些方法是需要打logger的,现在我们例如AOP,将打logger的事情给AOP去做先定义个service接口package org.stu原创 2016-03-25 16:12:05 · 1823 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十八) Spring AOP开发大作战源码解析
其实上一篇文章价值很小,也有重复造轮子的嫌疑,网上AOP的实例很多,不胜枚举,其实我要说的并不是这个,我想要做的就是上一节中spring的配置文件:我们这边并没有用到我们上几节分析的哪几个AOP的主要实现类:ProxyFactoryBean.java , ProxyFactory.java ,AspectJProxyFactory.java ,在我们这个配置文件中,根本没有显示的去配置这些原创 2016-03-26 13:46:18 · 1985 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring IoC源码(八)了解BeanFactoryAware
官方解释:实现这个接口的bean其实是希望知道自己属于哪一个beanfactory原创 2016-03-11 16:22:17 · 1888 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十三) jdk的动态代理和cglib的代理
Spring AOP的核心就是动态代理,我们先来准备下动态代理的知识的储备 动态代理,顾名思义,就是为一个真实对象生成一个代理的对象,生活中,这种模式也是很常见,例如,淘宝,就是一个代理,很多网店,依托于淘宝,可以更好的卖出很多的产品,但淘宝可能会额外的多做一点事情,这样就会产生双赢的局面好了,我们现在就根据上面的背景,写下两种代理:首先jdk的动态代理:原创 2016-03-23 10:22:32 · 2754 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
接着上次那个后记接着说,我们已经知道了分析了refresh()这个方法中的关于BeanFactoryPostProcessor的执行的代码分析:因为任何实现了BeanFactoryPostProcessor接口的bean首先要做的事就是先把自己实例化好,所以我们花了很大篇幅讲了getBean这个Spring的核心方法~我们看的都是invokeBeanFactoryPos原创 2016-03-14 19:00:31 · 1811 阅读 · 0 评论 -
浅析Spring 事务(二十一) spring事务的传播行为
经过我们上面一个章节的初步了解,我们已经知道了Spring事务的基本配置,今天我们一起接着讨论一下spring事务的传播原创 2016-03-29 16:07:34 · 7018 阅读 · 0 评论 -
学习sharding-jdbc(二)之spring+mybatis+sharding-jdbc整合
新建Maven项目pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.原创 2016-03-19 10:50:06 · 20267 阅读 · 29 评论 -
做一个合格的程序猿之浅析Spring IoC源码(二)BeanFactory初始化
首先,新建项目:pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apach原创 2016-03-08 19:55:11 · 5433 阅读 · 9 评论 -
做一个合格的程序猿之浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
spring IoC源码AbstractApplicationContext.java中refresh这个方法的地位和分析源代码之前的准备~原创 2016-03-10 15:37:28 · 2755 阅读 · 2 评论 -
做一个合格的程序猿之浅析Spring IoC源码(四)分析BeanPostProcessor(1)
说白了,就是我们可以自定义的去修改spring给我们创建的类,给了我们一个二次修改bean的机会,这种设计思路与spring的“开闭原则”相符合,没有过度分装,举例来说,我们根据beanDefinition去查找一个Teacher,找到之后spring给我们实例化这个Teacher,但是我们用这个teacher的时候,发现这个teacher会抽烟,我们可以修改这个老师会抽烟的属性,这样就得到了一个完美的老师,这个完美的老师授课结束后,我们再告诉他你可以接着抽烟了,所以spring给我们想的还是很周到的~原创 2016-03-10 13:56:10 · 2960 阅读 · 1 评论 -
做一个合格的程序猿之浅析Spring IoC源码(五)再谈BeanPostProcessor(2)
上一节,我们已经初步知道了beanPostProcessor这个接口是干什么的了,可以做什么样的事情,并且我们举了一个简单的“Teacher”的例子,但是大家也有点疑问,这个实际意义是什么呢?在项目中实际运用是什么呢? 下面再给出一个例子,在实际项目中,我们一个项目一套代码,有生产环境和开发环境,数据库链接配置文件有2种,jdbc_dev.properties和jdbc_prd.properties这2个配置文件,我们只需要简单的修改一下,spring的配置文件就可以很快的切换数据源,这样支持多环境原创 2016-03-10 15:55:17 · 2401 阅读 · 4 评论 -
做一个合格的程序猿之浅析Spring IoC源码(六)BeanFactoryPostProcessor
红色区域标注出:允许自定义去修改应用上下文中的beanDefinnition,来适配底层上下文bean的属性值这句话的意思其实很好理解,当spring初始化好benaDefinnitionMap之后,提供了一个借口允许我们开发者自定义的去修改beanDefinition中的内容,这也是符合“spring”的开闭原则原创 2016-03-11 10:11:49 · 2409 阅读 · 0 评论 -
做一个合格的程序猿之浅析Spring IoC源码(七)浅谈BeanFactory和FactoryBean
这次就不一句句翻译了(太多了),还是稍微大概的讲一下意思吧:FactoryBean是一个接口,任何一个Bean可以实现这个接口,那么这个bean将成为一个Factory,这个Factory将一些对象暴露出去,这些对象不一定是它们自己,返回的是一个Object对象,这个对象将通过getObject()暴露出去,并且支持单例和prototypes原创 2016-03-11 13:37:22 · 2886 阅读 · 2 评论 -
做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解
AOP(Aspect-Oriented Programming) 面向切面的编程,在我们平时的开发过程中,AOP其实用的地方总结有: ①用来做日记的处理 ②方法的调用统计 ③业务层面的读写分离(例如自定义的Annotation+AOP可以实现切换数据源) ④自定义权限拦截器 在spring框架中,AOP则发挥了不少功效,例如spring原创 2016-03-23 09:30:39 · 2400 阅读 · 0 评论 -
浅析Spring 事务(十九) 简介事务
经过前面十八个章节的浅析,我们已经初步了解了Spring框架的左膀右臂IoC和AOP,今天我们开始一起分析一下Spring的事务~首先,先说一下,什么是事务,事务是数据库的比较特有的属性,这也是数据库区别于文件系统的区别(HDFS貌似没有事务吧),也就是文件系统与数据库系统最大的不同吧,事务就是将数据库从一个一致性状态成功的转化成另一个一致性状态,说白了就是我们在操作数据库的一原创 2016-03-28 16:13:09 · 1226 阅读 · 0 评论