引子

    接触Java很多年了,各种framework,却从未系统的去了解过。最近突然想清楚一件事,就是当下的目标——Focus on Java-based RESTful WS & JS。而之于前者,想借助于Spring和jersey来做。而在自己尝试去搭建这样的框架时,却遇到了很多有关Spring的各种问题,故决定要对Spring有一个系统的把握。

    掌握的方式则是选择了Spring in Action这本书的英文版,一方面是因为XX in Action这个系列的书真的堪称是经典之作,另一方面是把英语用起来。之所以决定在这里开个分类,也有在文档书写方面练练手。

 

    Breakpoint:1.1 Simplifying Java development

    这本书总共有三个part,一开始是选摘读的,但发现在动手实践的时候会遇到各种问题,所以决定from top to bottom来啃完它。

    最近看的这一小节主要是介绍了Spring是从4个方面来简化Java开发的。

 

  • Lightweight

把POJO(Plain old Java object)变得更加plain。这一小节作者将Bean和POJO作为等同的概念来看待。我也在这一小节里解开了一直以前困惑自己的一个问题,就是JavaBean。以前在概念上我不知道什么是JavaBean,而在形式上对它的理解就是一个带有setter, getter的object。通过此书,原来JavaBean是Sun公司发布的一个规范,EJB是对其在企业级开发上的扩展规范,但是EJB并没有去简化JavaBean,也没有达到它原本简化企业级Java开发的本意,最终不得不退出历史的舞台。而对于JavaBean,我想我会继续保持之前在形式上对它的理解。

  • DI

Dependency Injection。这个词在第一家公司做web开发的时候接触到的,它和IoC作为等同的概念in my head(我实在找不出一个好的同等的中文状语,这时候才发现英语可以扩散意思的好处)。

这一小节,作者给我们举了一个constructor injection的例子。也加深了我对Spring的applicationContext配置文件和ClassPathXmlApplicatonContext类的印象。DI带来的最大好处在我看来应该是解耦(Decoupling)。

  • Aspect

毕业答辩的时候,同组的一个同学在进行论文答辩的时候,被老师问道一个问题——除了我们所熟知的面向过程,面向对象以外,你还知道哪些面向的方面(大意如此)?当时我脑海里的第一反应是AOP和面向服务(这个概念是在用友的官网上看来的,想必现在的Cloud server就是基于此概念吧。现在回答的话会加上一个RESTful的面向资源)。但那时只知道AOP这个词,对其一点概念都没,只是觉得好高深啊。再后来是工作一年后在花旗的一次面试,对方问我什么是AOP。我当时的回答好像是说不知道,但是补充说了Spring在我当时做的那个项目里主要的用途是事务管理。然后他告诉说这是AOP的一个方面,此外还有Logging……(此处略去N个字)。反正当时还是云里雾里啦。

在这一小节,我知道了Spring的AOP主要的三个点是Transaction manager, Secrutiy and Logging(还有没有其他的暂时没概念)。另外,作者也在这个小节的例子里,引出pointcut, before advice and after advice这几个词。目前的我对此只能望文生义一下了。AOP的好处就是让开发者only focus on business logic。Spring会为我们提供这些公共的常用模块。

  • Eliminating boilerplate with template

看完这一块,明白了第一家公司在使用JDBC的时候为什么用的是jdbcTemplate。而在之前看过Spring 为RESTful WS提供的RestTemplate,也让我对这一小节有了更好的理解。关于这一小节,我在想,是不是我们也可以把这么做的初衷应用到实际项目中呢。心动不如行动,希望自己能尽快开始实践这一点。

 

好啦,这就是我对Spring overview的理解。Again,真心是本好书,英文版也好理解,不像JS权威指南那么难读。终于可以先去洗把脸,再买鸡蛋回来做蛋炒饭填饱自己肚子的事了。

 

Posted on 2013-09-01 12:34  單筱寒  阅读(319)  评论(0编辑  收藏  举报