概述


Spring 的声明式事务管理在底层是建立在 AOP 的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过等价的基于标注的方式),便可以将事务规则应用到业务逻辑中。因为事务管理本身就是一个典型的横切逻辑,正是 AOP 的用武之地。Spring 开发团队也意识到了这一点,为声明式事务提供了简单而强大的支持。

阅读更多

REST(Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

概述


REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源。获得资源致使应用程序转变了状态。REST定义了一组体系架构原则,可根据这些,包括使用不同语言编写的客户端如何通过HTTP处理和传输资源状态。REST对Web的影响非常大,由于其使用很方便,已经普遍取代了基于SOAP和WSDL的接口设计。

阅读更多

SpringMVC介绍


了解一个东西,其实看它的文档是最快速的学习方法了。Spring4.x的文档也在翻译过程中,目前我找到的是github上的一个翻译小组spring-framework-reference,还在翻译过程中,但关于SpringMVC部分的内容已经翻译的差不多了。英文很强的可以直接看官方的英文文档。我这里就直接摘抄文档中关于SpringMVC的介绍。

Spring Web 模型-视图-控制器(MVC) 框架是围绕 DispatcherServlet而设计的,其支持可配置的 handler 映射,视图解析,本地化、时区和主题的解析以及文件上传的功能。DispatcherServlet 负责将请求分发到不同的 handler。默认的 handler 通过@Controller@RequestMapping注解,提供多种灵活的处理方法。若加上 @PathVariable 注解和其他辅助功能,你也可用使用 @Controller 机制来创建 RESTful web 站点和应用程序。

阅读更多

享元模式-Flyweight Pattern【学习难度:★★★★☆,使用频率:★☆☆☆☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

当前咱们国家正在大力倡导构建和谐社会,其中一个很重要的组成部分就是建设资源节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高,内存属于计算机的“稀缺资源”,不应该用来“随便浪费”,那么是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定,这种技术就是我们本章将要学习的享元模式。

阅读更多

外观模式-Facade Pattern【学习难度:★☆☆☆☆,使用频率:★★★★★】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。

阅读更多

装饰模式-Decorator Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

尽管目前房价依旧很高,但还是阻止不了大家对新房的渴望和买房的热情。如果大家买的是毛坯房,无疑还有一项艰巨的任务要面对,那就是装修。对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮、更温馨、更实用、更能满足居家的需求。在软件设计中,我们也有一种类似新房装修的技术可以对已有对象(新房)的功能进行扩展(装修),以获得更加符合用户需求的对象,使得对象具有更加强大的功能。这种技术对应于一种被称之为装饰模式的设计模式,本章将介绍用于扩展系统功能的装饰模式。

阅读更多

组合模式-Composite Pattern【学习难度:★★★☆☆,使用频率:★★★★☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点)。下面将学习这种用于处理树形结构的组合模式。

阅读更多

桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为 3 + 12 = 15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画笔,并且也需要具有12种颜色,对应的蜡笔需增加12支,而毛笔只需增加一支。为什么会这样呢?通过分析我们可以得知:在蜡笔中,颜色和型号两个不同的变化维度(即两个不同的变化原因)融合在一起,无论是对颜色进行扩展还是对型号进行扩展都势必会影响另一个维度;但在毛笔中,颜色和型号实现了分离,增加新的颜色或者型号对另一方都没有任何影响。如果使用软件工程中的术语,我们可以认为在蜡笔中颜色和型号之间存在较强的耦合性,而毛笔很好地将二者解耦,使用起来非常灵活,扩展也更为方便。在软件开发中,我们也提供了一种设计模式来处理与画笔类似的具有多变化维度的情况,即本章将要介绍的桥接模式。

阅读更多

适配器模式-Adapter Pattern【学习难度:★★☆☆☆,使用频率:★★★★☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图1所示:

阅读更多

建造者模式-Builder Pattern【学习难度:★★★★☆,使用频率:★★☆☆☆】

该博文是转载LoveLion的博客,在其基础上,将HTML改写为Markdown。在原博文中,作者已经给每个模式都设计了一个实现代码,我已经将代码全部实现,做了一定修改放到了Github中,大家可以clone看一下实现效果,加强印象。
Github地址:https://github.com/tracylihui/design_pattern
原文链接:史上最全设计模式导学目录(完整版)

没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。

阅读更多