1.1 简化Java开发
Spring
是一个开源框架,最早由Rod Johnson
创建,并在《Expert One-on-One:J2EE Design and Development》这本著作中进行了介绍。Spring
是为了解决企业级应用开发的复杂性而创建的,使用Spring
可以让简单的JavaBean
实现之前只有EJB
才能完成的事情。但Spring
不仅仅局限于服务器端开发,任何Java
应用都能在简单性、可测试性和松耦合等方面从Spring
中获益。bean
的各种名称……虽然Spring
用bean
或者JavaBean
来表示应用组件,但并不意味着Spring
组件必须要遵循JavaBean
规范。一个Spring
组件可以是任何形式的POJO
。在本书中,我采用JavaBean
的广泛定义,即POJO
的同义词。
纵览全书,读者会发现Spring
可以做非常多的事情。但归根结底,支撑Spring
的仅仅是少许的基本理念,所有的理念都可以追溯到Spring
最根本的使命上:简化Java
开发。
这是一个郑重的承诺。许多框架都声称在某些方面做了简化,但Spring
的目标是致力于全方位的简化Java
开发。这势必引出更多的解释,Spring
是如何简化Java
开发的?
为了降低Java
开发的复杂性,Spring
采取了以下4种关键策略:
- 基于
POJO
的轻量级和最小侵入性编程; - 通过依赖注入和面向接口实现松耦合;
- 基于切面和惯例进行声明式编程;
- 通过切面和模板减少样板式代码。
几乎Spring
所做的任何事情都可以追溯到上述的一条或多条策略。在本章的其他部分,我将通过具体的案例进一步阐述这些理念,以此来证明Spring
是如何完美兑现它的承诺的,也就是简化Java
开发。让我们先从基于POJO
的最小侵入性编程开始。
1.1.1 激发POJO的潜能
如果你从事Java
编程有一段时间了,那么你或许会发现(可能你也实际使用过)很多框架通过强迫应用继承它们的类或实现它们的接口从而导致应用与框架绑死。一个典型的例子是EJB 2
时代的无状态会话bean
。早期的EJB
是一个很容易想到的例子,不过这种侵入式的编程方式在早期版本的Struts
、WebWork
、Tapestry
以及无数其他的Java
规范和框架中都能看到。Spring
竭力避免因自身的API
而弄乱你的应用代码。Spring
不会强迫你实现Spring
规范的接口或继承Spring
规范的类,相反,在基于Spring
构建的应用中,它的类通常没有任何痕迹表明你使用了Spring
。
最坏的场景是,一个类或许会使用Spring
注解,但它依旧是POJO
。不妨举个例子,请参考下面的HelloWorldBean
类:
原文链接: 1.1 简化Java开发