引子

接触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权威指南那么难读。终于可以先去洗把脸,再买鸡蛋回来做蛋炒饭填饱自己肚子的事了。

Spring overview的更多相关文章

  1. 69 Spring Interview Questions and Answers – The ULTIMATE List--reference

    This is a summary of some of the most important questions concerning the Spring Framework, that you ...

  2. Spring 笔记(一)概念梳理

    概念 预备知识 1. POJO POJO是Plain Old Java Object的缩写,是软件开发大师Martin Fowler提出的一个概念,指的是一个普通Java类.也就说,你随便编写一个Ja ...

  3. Spring Security(一) —— Architecture Overview

    摘要: 原创出处 https://www.cnkirito.moe/spring-security-1/ 「老徐」欢迎转载,保留摘要,谢谢! 1 核心组件 一直以来我都想写一写Spring Secur ...

  4. An overview of the Spring MVC request flow

    The Spring MVC request flow in short: When we enter a URL in the browser, the request comes to the d ...

  5. Spring学习笔记之Container overview

    The Spring IoC container

  6. Spring 4.3.11.RELEASE文档阅读(一):overview

    一.宏观概述中的体会和发现 Spring是组件式的框架,它允许我们只使用其一小部分.Spring所做的工作,就是不断的简化我们的操作.比如它的IOC容器,当我们自己应用设计模式,比如说:建造者.工厂. ...

  7. 20191224 Spring官方文档(Overview)

    Spring框架概述 从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并提供对JDK 11 LTS的现成支持.建议将Java SE 8更新60作为 ...

  8. 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的

    感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...

  9. Hello Spring Framework——依赖注入(DI)与控制翻转(IoC)

    又到年关了,还有几天就是春节.趁最后还有些时间,复习一下Spring的官方文档. 写在前面的话: Spring是我首次开始尝试通过官方文档来学习的框架(以前学习Struts和Hibernate都大多是 ...

随机推荐

  1. 使用UltraISO制作U盘启动盘——转载

    现在流行用U盘来安装系统,但要用U盘来安装系统的前提条件下是如何将镜像文件写入到U盘里,UltraISO能很好的满足你的需求. 步骤/方法  鼠标右键“以管理员身份运行”UltraISO图标    打 ...

  2. 在 Windows 環境下利用 VNC 遠端控管 Mac OS X Server

    Mac OS Server 可以使用 VNC 來遠端控管.不過,在 Mac 上打開這個功能很簡單,要讓 Windows 的 VNC Viewer 連上卻很難,原來是有原因的. 首先我們來看怎麼在 Ma ...

  3. apk添加系统签名

    上一节,可以通过添加su的方式获取系统权限,但这种存在安全隐患,故不推荐,本文通过获取数字签名方式获取系统权限. 在我们的AndroidManifest.xml中添加    android:share ...

  4. visual c++ 2010安装失败导致CRM2015安装失败

    记录一下: 今天重新安装CRM2015时碰到以下错误: 安装一个或多个缺少的必备组件失败...,查看日志发现是 Microsoft Visual C++ 运行时 的安装失败,但查看系统发现vc++20 ...

  5. ngx.lua中遇到的小问题2

    用lua+drizzle在数据库中插入数据失败(不能访问数据库) 后面发现原来是nginx配置文件中的drizzle模块部分最后多了一行  content_by_lua 'ngx.say(" ...

  6. 【转】MessageBox的常见用法

    网址:http://www.douban.com/note/40199603/ 一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PCh ...

  7. Python全栈考试-部分试题(精选)

    Python全栈考试(一) Python全栈考试(一) 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py ...

  8. VIM操作常用指令(转)

    vim是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface&q ...

  9. 敏捷软件开发vs传统软件开发

    摘要 本文介绍了传统软件开发(着重介绍了传统软件开发中常用的瀑布模型)和敏捷软件开发,以及敏捷开发和传统开发的对比. 一.传统软件开发 比较常用的几种传统软件开发方法:瀑布式开发.迭代式开发.螺旋开发 ...

  10. CocosCreator反射在Android中的使用

    CocosCreator反射在Android中的使用 新建一个CocosCreator项目,然后点击构建 构建完成之后,即可用AndroidStudio打开构建的项目 使用AndroidStudio打 ...