
Spring 分析
clypm
松弛的琴弦,永远奏不出时代的强音
展开
-
Spring 4.x-Context的UML类图
原创 2016-11-29 13:40:56 · 1338 阅读 · 3 评论 -
浅析Spring AOP源码(十六) 分析ProxyFactory
其实说实话。通过上面2节的讲解,spring AOP可以算分析完了,因为我们已经知道AOP最为核心的2个组件都不是ProxyFactoryBean,AspectJProxyFactory,亦或者是这节我们讲解的ProxyFactory,这三个基层的类,做的最重要的事都是去维护几个变量,有了这几个变量就可以做很多事,原因:①变量adivsor中定义了advice,定义了通知,即定转载 2017-01-12 18:01:09 · 410 阅读 · 0 评论 -
浅析Spring AOP源码(十五) 分析JdkDynamicAopProxy的invoke方法
上一节我们已经分析了Proxyfactorybean如何去生成一个目标对象的代理的,这一节我们将浅析一下基于JDK动态代理的核心回调方法invoke的源代码:首先先打开JdkDynamicAopProxy.Java 如下JdkDynamicAopProxy.java文件是实现了AopProxy和InvocationHandler这2个转载 2017-01-12 17:56:09 · 1569 阅读 · 0 评论 -
浅析Spring AOP源码(十四) 分析ProxyFactoryBean
spring AOP 的实现设计图: (图片来自《Spring技术内幕:深入分析Spring架构和设计原理》)最基本的实现有三个,AspectJProxyFactory.Java ,Pr转载 2017-01-12 17:47:08 · 890 阅读 · 0 评论 -
浅析Spring AOP源码(十二) AOP概念理解
AOP(Aspect-Oriented Programming) 面向切面的编程,在我们平时的开发过程中,AOP其实用的地方总结有: ①用来做日记的处理 ②方法的调用统计 ③业务层面的读写分离(例如自定义的Annotation+AOP可以实现切换数据源) ④自定义权限拦截器 在spring框架中,AOP则发挥了不少功效,例如spring的事务,这应该是AOP在s...转载 2017-01-12 17:29:10 · 401 阅读 · 0 评论 -
浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
接着上次那个后记接着说,我们已经知道了分析了refresh()这个方法中的关于BeanFactoryPostProcessor的执行的代码分析:因为任何实现了BeanFactoryPostProcessor接口的bean首先要做的事就是先把自己实例化好,所以我们花了很大篇幅讲了getBean这个spring的核心方法~我们看的都是invokeBean转载 2017-01-12 17:27:59 · 501 阅读 · 0 评论 -
浅析Spring IoC源码(十一)Spring refresh()方法解析之一
经过上面几节的简单介绍我们了解了spring的一些组件,现在我们来分析一下AbstractApplicationContext中的refresh()这个核心方法吧~用我们上一节的代码,debug进入refresh方法:[java] view plain copypublic void refresh() throws BeansE转载 2017-01-12 17:22:15 · 579 阅读 · 0 评论 -
浅析Spring IoC源码(十)Spring Bean的初始化顺序
上几节我们比较详细地说明了一下BeanFactoryPostProcessor和BeanPostProcessor这2个接口的作用和意义,并且也花了一个章节,讲了一下BeanFactory和FactoryBean的关系,最后我们也稍微说明了一下BeanFactoryAware和BeanNameAware这两个接口的作用,这一节,将开始讲一下,一个bean在被spring管理的时候,初始化时的顺序转载 2017-01-12 17:10:28 · 733 阅读 · 0 评论 -
浅析Spring IoC源码(九)了解BeanNameAware
【Spring实战】—— 8 自动装配本篇介绍一下自动装配的知识,Spring为了简化配置文件的编写。采用自动装配方式,自动的装载需要的bean。 自动装配 有以下几种方式: 1 byName 通过id的名字与属性的名字进行判断,要保证Bean实例中属性名字与该装配的id名字相同。 2 byType 通过类型确定装配的bean,但是当存转载 2016-11-29 13:42:22 · 1279 阅读 · 0 评论 -
浅析Spring IoC源码(六)BeanFactoryPostProcessor
本篇主要讲解了Spring的最常用的功能——依赖注入。注入的方式,是使用Getter Setter注入,平时大多的编程也都是使用这种方法。 举个简单的例子,还是表演者。 表演者有自己的属性,年龄或者表演的歌曲等等。还需要一些复杂的属性,比如乐器,每一种乐器会发出不同的声音。 下面看一下表演者Performerpackage com.spring.t转载 2016-11-28 14:06:42 · 540 阅读 · 0 评论 -
浅析Spring IoC源码(七)浅谈BeanFactory和FactoryBean
【Spring实战】—— 6 内部Bean本篇文章讲解了Spring的通过内部Bean设置Bean的属性。 类似内部类,内部Bean与普通的Bean关联不同的是: 1 普通的Bean,在其他的Bean实例引用时,都引用同一个实例。 2 内部Bean,每次引用时都是新创建的实例。 鉴于上述的场景,内部Bean是一个很常用的编程模原创 2016-11-29 11:07:43 · 496 阅读 · 0 评论 -
浅析Spring IoC源码(五)再谈BeanPostProcessor(2)
本篇文章主要介绍了在spring中通过配置init-method和destroy-method方法来实现Bean的初始化和销毁时附加的操作。在java中,我们并不需要去管理内存或者变量,而在C或C++中,可以通过new和delete等方式来创建和删除变量或者对象。在Spring中,如果想要对一个bean进行初始化和结束附加一定的操作,则可以使用上述的两个方法来实现。 在介绍这转载 2016-11-28 13:58:52 · 469 阅读 · 0 评论 -
浅析Spring IoC源码(四)分析BeanPostProcessor(1)
【Spring实战】—— 1 入门讲解这个系列是学习spring实战的总结,一方面总结书中所写的精髓,另一方面总结一下自己的感想。 基础部分讲解了spring最为熟知的几个功能:依赖注入/控制反转 和 面向切面编程。 这两个就不再多说了,功能比较简单,也没有制作样例,后面再深入操作下。 Spring使用POJO类转载 2016-11-28 09:57:04 · 599 阅读 · 0 评论 -
浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
Spring源码解析——如何阅读源码 最近没什么实质性的工作,正好有点时间,就想学学别人的代码。也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想。 手码不易,转载请注明:xingoo 这篇博文你可以了解到: 1 Spring jar包以及源码使用 2 简单的spring转载 2016-11-28 09:49:36 · 678 阅读 · 0 评论 -
浅析Spring IoC源码(八)了解BeanFactoryAware
【Spring实战】—— 5 复杂集合类型的注入之前讲解了Spring的基本类型和bean引用的注入,接下来学习一下复杂集合类型的注入,例如:List、Set、Map等。 对于程序员来说,掌握多种语言是基本的技能。 我们这里做了一个小例子,程序员们是一个Bean实例,而掌握的编程语言则是放入一个集合类型中进行注入。 简单的来说:原创 2016-11-29 11:31:16 · 9993 阅读 · 0 评论 -
浅析Spring IoC源码(二)BeanFactory初始化
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题。最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。本文是权当本人的自己AOP学习笔记,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。对部分函数的调用进行日志记录,用于观转载 2014-04-01 09:29:14 · 808 阅读 · 0 评论 -
浅析Spring IoC源码(一)分析前的准备和思考
IoC IoC: Inversion of Control,控制反转, 控制权从应用程序转移到框架(如IoC容器),是框架共有特性 1、为什么需要IoC容器1.1、应用程序主动控制对象的实例化及依赖装配 Java代码 收藏代码A a = new AImpl(); B b = new BImpl(); a.setB(b); 本质:创建对象,主动实例化,转载 2014-03-21 11:15:22 · 992 阅读 · 1 评论 -
Spring事务传播机制
1 事务的传播属性(Propagation) 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none exists. 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那转载 2014-03-31 13:41:29 · 2562 阅读 · 0 评论 -
浅析Spring AOP源码(十七) Spring AOP开发大作战
前面AOP几节我们已经浅析了spring 是如何实现AOP的,和AOP的底层原理,那么今天我们先来看看我们开发环境中是怎么运用AOP的好了,我们先定义一个简单的应用场景,在web开发中,mvc模式中,我们的有些核心service的某些方法是需要打logger的,现在我们例如AOP,将打logger的事情给AOP去做先定义个service接口转载 2017-01-12 18:05:37 · 348 阅读 · 0 评论