对于Java开发者来说,现在是一个很好的时期。
在20年的历史中,Java经历过一些好的时期以及不好的时期。尽管存在着一些粗糙点(rough spots),例如applets, Enterprise JavaBeans(EJB), Java Data Objects(JDO),以及数不尽的日志框架,Java仍然拥有着一个丰富的多样化的历史,作为许多企业级软件的平台而言。而且,Spring在这一段历史上占有很重要的一笔。
在早期,Spring作为更加重量级的Java技术(特别是EJB)的替代品被创造出来。相比EJB,Spring提供了一个更轻量更简洁的的编程模型。它给予了普通Java对象(POJO)更加强大的能力,而这些能力是EJB和一些其他Java规格才拥有的。
随着时间的过去,EJB和J2EE得到了发展。EJB开始自身提供简单的面向POJO的变成模型。现在EJB利用了诸如依赖注入和面向方面变成的思想,可以说其灵感来自于Spring的成功。
虽然J2EE(现在被称为JEE)可以赶上Spring,但是Spring从未停止前进的脚步。Spring持续的发展各个领域。而这些领域,即使是现在,JEE才刚刚开始开始探索,甚至还未引入。移动开发,社交API集成,NoSQL数据库,云计算,以及大数据只是Spring引入的一小部分领域。而且,未来的Spring依然一片光明。
正如我所说,对于开发者来说,现在是一个很好的时期。
这本书是对Spring的一个探索。在这一章节,我们将在高层次测试Spring,让你品尝一下Spring到底是什么。这一章将让你明白Spring到底解决了各种什么样的问题,并且未这本书的其余部分做好准备。
1.1 简化Java开发
Spring是由Rod Johnson创造的一个开源框架。Spring被创造出来以解决企业级应用开发的复杂问题,并且让普通的JavaBeans(plain-vanilla JavaBeans)能够完成此前只有EJB才可能完成的任务。但是Spring的用处并不仅仅局限于服务器端开发。而且Java应用可以从Spring中获益,例如间接性、可测试性以及松耦合。
另一种意义的bean...虽然在表示应用组件时,Spring大方地使用了bean和JavaBean这两个词,但这并不表示一个Spring组件必须严格地遵从JavaBean的规格。一个Spring组件可以是任何形式的POJO。在本书中,我假设JavaBean是一个宽松的定义,与POJO同义。
通过本书你将了解到,Spring做了许多事情。但是Spring提供的几乎每一个功能的根基,是一些非常基础的想法,全部专注于Spring的基本任务:Spring简化Java开发。
这里是粗体!大量的框架说要简化某一些事物。但是Spring旨在简化Java开发这一广泛主题。这还需要更多的解释。Spring是如何简化Java开发的呢?
为了支持对Java复杂度的攻击,Spring利用了4个关键策略:
利用POJO的轻量级与最小侵入式开发(Lightweight and minimally invasive development with POJOs)
通过DI和面向接口实现松耦合(Loose coupling through DI and interface orientation)
通过方面和普通惯例实现声明式编程(Declarative programming through aspects and common conventions)
利用方面和模板消除陈词滥调的代码(Eliminating boilerplate code with aspects and templates)
基本上Spring做的每一件事都可以追溯到这四条策略中的一条或几条上。