《Spring In Action》第三版中文版 Chapter 1 Piece 2

版权与免责声明:本博客文章翻译自《Spring in action》第三版,原书版权归原做者及其出版单位全部,本人仅出于我的兴趣,翻译其中内容。本人不以盈利为目的,放置在博客中仅为了方便网友阅读原做遇到困难时参考。本人严正声明,本人并不拥有翻译该做品之正当权力,所以严禁他人转载,亦不保证做品之正确性;如侵犯您的权益,望告知,即行关闭。java

翻译声明:本人目前计划天天翻译两页,且不作任何工期承诺,以前未在网上发现相似内容,如已有类似内容,望告知,也免得我翻译了。spring

Bean不是惟一的称呼…… 尽管Spring大量地使用单词beanJavaBean来指代应用程序组件,可是不要望文生义地觉得一个Spring组件就必须遵循JavaBeans规范。一个Spring组件能够是任何形式的POJO。在本书中,我采用广义上的JavaBean,即POJO的同义词。编程

纵览本书,你将发现,Spring神通广大。可是支撑Spring绝大部分功能的根基实际上是少量基本理念,它们专一于Spring的基本任务:简化Java开发。设计模式

这是一份庄重的承诺!不少框架都声称简化这样或那样的事情,可是Spring致力于全方位地简化Java开发。这有待于细细解释。Spring是如何简化Java开发的?session

为了下降Java的复杂性,Spring采起了如下四项核心策略:框架

·        采用普通简单Java对象(POJO)保持轻量级和最低限度侵入开发测试

·        经过依赖注入和面向接口下降耦合spa

·        经过切面和惯例进行声明式编程翻译

·        经过切面和模板减小冗余设计

Spring所作的几乎一切事情均可以追溯到上述一个或多个策略。在本章的其余部分,我将对这些理念展开论述,并经过具体实例展示Spring是如何较好地兑现简化Java开发这一承诺的。咱们先来看一看Spring是如何经过鼓励面向POJO开发来保持最低限度侵入的。

1.1.1    激发POJO的潜能

若是你是Java开发的老手,你或许见过(甚至使用过)这样的框架,它们强迫你去扩展它们提供的类,或实现它们的接口,从而将你牢牢束缚住。下面这个经典的示例,是EJB-2时代的无状态会话bean。从这个繁琐的HelloWorldBean中你能够发现,EJB2规范实在是太过于臃肿了。

package com.habuma.ejb.session;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

public class HelloWorldBean implements SessionBean {

public void ejbActivate() {

}

public void ejbPassivate() {

}

public void ejbRemove() {

}

public void setSessionContext(SessionContext ctx) {

}

public String sayHello() {

return "Hello World";

}

public void ejbCreate() {

}

}


SessionBean接口容许你经过实现若干生命周期回调方法(这些方法以ejb打头),嵌入EJB的生命周期内。或许我应该这么说,SessionBean接口强迫你嵌入EJB的生命周期内,即使你不须要。HelloWorldBean中的大段代码仅仅是为了知足框架的须要。那么问题是:到底谁在为谁服务?

EJB2的侵入式特性并不是特例。其余流行框架,好比StrutsWebWorkTapestry的早期版本也都和其余简单Java类纠缠不清(imposed themselves upon otherwise simple Java classes)。这些重量级框架,强迫开发者编写混杂了冗余代码的类,这些类被束缚在框架之中,一般也很难编写相应的测试。

Spring竭力避免让你的应用程序代码与它的API相混杂。Spring几乎从不强制你实现一个Spring接口,或者扩展一个Spring类。事实上,基于Spring的应用程序中的类一般没有迹象显示它们正在被Spring所使用。最坏的状况下,一个类或许加注了Spring的注解,但它仍旧是一个POJO

为了阐明这一点,若是清单1.1中展现的HelloWorldBean要被重写为Spring管理的bean,它看起来可能会是这样:

package com.habuma.spring;

public class HelloWorldBean {

public String sayHello() {

return "Hello World";

}

}

难道不是好得多吗?那些恼人的生命周期方法都不见了。HelloWorldBean没有实现、扩展或者导入任何Spring API的内容。HelloWorldBean是简练的,清晰的,总的来讲,是一个普通简单Java对象。

POJO形式纵然简单,但功能能够很是强大。Spring强化POJO的方法之一就是使用依赖注入。让咱们看看依赖注入是如何帮助应用程序的对象彼此解耦的。

1.1.2    注入依赖关系

依赖注入这个词让人望而生畏,它成为了一项复杂的编程技巧或设计模式的理念。可是事实证实,依赖注入(DI)并无听上去那么复杂。

相关文章
相关标签/搜索