
解构Spring技术
文章平均质量分 78
从更深的层次探讨Spring技术
广州接入
毕业于北京交通大学计算机系,一直从事企业应用开发,有十多年的SaaS平台产品研发经验。擅长系统架构,需求分析。
展开
-
编程核心技术剖析系列(Spring IOC,AOP和ORM)
这是8年前作品,对于现在来说还是非常有用,掌握基本技术思想,就很容易跟上技术的发展: 1、Spring关键技术解剖系列 Spring系列(1)--创建动态代理类 Spring系列(2)--为什么需要动态代理 Spring系列(3/1)---交互的一种尝试 Spring系列(3/2)---交互的改进 Spring系列(3/3)---一个较为完善的模型 Spring系列(3/4)----...原创 2020-05-02 19:19:46 · 4331 阅读 · 3 评论 -
Spring系列(1)--创建动态代理类
象DotNet,Java之类的语言能够进行动态代理类的创建,得益于其本身并不是直接编译成机器代码,而是编译成中间语言,在运行时才解释或动态编译成目标机器语言。这也是为什么这些概念先在Java兴起的根本原因。产生动态代理类,一般都是利用Emit命名空间的指令,但这个对IL的要求比较高,我这里利用C#提供的动态编译功能实现, 优点是直观,容易理解,不用熟悉IL指令,缺点当然是显得不怎么专业。 (网原创 2011-08-11 19:23:58 · 5746 阅读 · 3 评论 -
Spring系列(2)--为什么需要动态代理
前一篇我把我自己实现动态包装的工厂类实现贴了出来,这一篇就来讲讲为什么要进行动态的代理。 理由看起来有以下几点: 1、有的时候我们需要为一些类的方法增加一些额外的责任,因为这些责任是额外的,去改动这些类当然是不好的。 对于这点,大家可以很快的想到用装饰模式或者代理模式去实现。当然,如果责任固定,而且是事先可预料的,可以在代码中预先进行处理,例如增加一个 框架型方法。不原创 2011-08-11 20:21:19 · 5968 阅读 · 0 评论 -
Spring系列(3/1)---交互的一种尝试
前一篇,我们知道可以利用委托和代理来实现为目标类增加额外责任,这里我们先用一个简单的例子说明如何去实现. //目标类,有3个公共方法,但由于非虚方法无法继承,所以能够切入的只有2个公共虚方法。虽然从生产代理的角度来讲,非虚公共方法也可以截获, //但要求代理类重写该方法,而一旦重写,根据方法的调用规则,在用目标类型调用这个方法时,其实是调不到代理类中的这个方法的,所以就没有机会截获和监视。原创 2011-08-12 19:44:41 · 3015 阅读 · 0 评论 -
Spring系列(3/2)---交互的改进
前面一篇,我们写了一个代理类,可以实现一些功能,但作为动态代理类的原型,还是有问题的。我们来改进一下原来的类,如下: /// /// 代理类,从AClass继承.这是必须的,否则AClass能用的地方, ProxyAClass1却没法用.这里的改进主要是将需要切入的委托,采用构造参数传递进去,有利于动态构造实例。 /// public class P原创 2011-08-12 20:32:43 · 2499 阅读 · 0 评论 -
Spring系列(3/3)---一个较为完善的模型
上一篇,我们建立了一个可用的模型,但我们也看到了它的不足,下面,我们就来继续完善这个模型: 1、首先,因为委托的目的其实是为了与附加责任类进行交互,而挂接了委托的附加责任类才会收到消息,从这点来看,是一个非常典型的观察者模式应用场景,因此我们觉得引入这个模式,好处是观察注册有专门的类来负责管理,在这里是代理类行使这个责任(后面的模型会转到代理类工厂),二是附加责任类以类的身份参与,而不再是简单的原创 2011-08-13 08:58:37 · 2509 阅读 · 0 评论 -
Spring系列(3/4)----一个较为完善的模型(续)
接上篇: 4、我们知道我们进行动态代理的目的是为了附加责任,也就是在目标类方法执行的时候,我们能增加一些附加的功能。我们前面的模型虽然可以达到这个目的,但通信信息不够。观察者虽然可以获取目标类,但无法知道当前执行的方法和参数值,这在有些情况下虽然没什么不利,但既然我们的目标其实就是监视目标类的方法的执行,能有目标类执行方法时的方法信息和当前实际参数的信息,当然是更好了,为此,我们可以专门增加一个原创 2011-08-13 09:07:51 · 2563 阅读 · 0 评论 -
Spring系列(3/4)----一个较为完善的模型(完)
接上一篇,我们继续来完善这个模型,我们为附加责任类定义了一个接口,这样,只要实现这个接口的类都可以注册,接收代理类的调用通知;同时为了更好的交互,我们还定义了一个调用参数接口,和一个具体的调用参数类,接下来,我们再看看代理类: /// /// 代理类,从AClass原创 2011-08-13 21:18:31 · 2680 阅读 · 0 评论 -
Spring系列(5)---IOC技术.
说实话,我对Spring技术还是不算很了解,IOC的技术我在实体框架技术中提到过,但IOC和AOP作为Spring技术的两个核心思想,我觉得在总结之前,还是有必要说明一下我所理解的IOC. 我们知道,如果两个事务之间存在逻辑关系,而且你需要根据这个逻辑关系做事,(比如类A和类B,类A需要调用类B的方法,比如ORM等),那么该做的事情,其实一件都不会少的,只是我们可以利用一些技术手段来减少直接的依原创 2011-08-14 17:19:44 · 3055 阅读 · 0 评论 -
Spring系列(6)---总结(1)
Spring当然不仅仅只包括我们前面看到的这些技术,但其核心的思想主要是IOC+AOP这两块。在前面的几块中我们着重讲了AOP,最后简单介绍了一下IOC.这个系列介绍到这儿,基本涉及了Spring主要思想和技术,并建立了自己的一个简单的AOP模型。 (一)我们首先来看看我们用到原创 2011-08-14 18:05:00 · 2741 阅读 · 0 评论 -
Spring系列(6)---总结(完)
下面我们来看看IOC和AOP的一些优劣: IOC: 优势:1)可以解耦一些逻辑关系,使得这种关系更加松散,而且可以在不重新编译程序的情况下通过配置信息的更改达到更改程序逻辑的目的;2)可以大量减少一些中间(比如典型的创建逻辑)类;3)带来了很大的灵活性和可扩展性。 劣势:1)只适合逻辑比较简单,而且形式比较统一,量比较大的地方,对于复杂的逻辑使用配置文件完成,反而会增加系统的复杂度和难度;2原创 2011-08-14 19:09:49 · 2681 阅读 · 0 评论