引子

接触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. 第十二课:Sizzle引擎详解

    这篇博客难度太大,跟前端开发其实没什么关系,如果你想成为大牛,那就去了解下吧.如果你还不想,那可以忽略,毕竟面试官也不会问到这里来,因为他也不太懂.呵呵. Sizzle引擎是jQuery的选择器,它大 ...

  2. Acadia Lab 228 + Lab 222

    又是一对串烧实验,布好线后非常方便就可以一起完成. 连线方案一模一样: Lab 228 数码管骰子 核心代码如下: def loop() : global cnt global btn_read,se ...

  3. 关于jQuery中环境配置中的问题

    一开始无法显示出效果,配置和代码如 这代码本没有错 但是就是无法显示 原因是我下载了2.x版本的jQuery,jQuery2.x版本是不支持IE6/7/8的,也有很多主流的浏览器无法显示出效果,于是在 ...

  4. Oracle游标--cursor_01-简单不带参数实现功能

    对于游标这个概念,可以理解为类似我们以前学习的jdbc的结果集对象, 我们可以使用游标对结果集从上到下进行遍历,获取每一行内容 首先我们要分析一下游标的分类 带参数的 书写函数的整体架构 定义游标 开 ...

  5. spark 特殊函数

    private var seed: Long = System.nanoTime()//返回最准确的可用系统计时器的当前值,以毫微秒为单位 require(storageLevel != Storag ...

  6. sublime中侧边栏字体大小的设置

    sublime这个编辑器相当强大,但是它的侧边栏字体实在是太小了,实在是反人类的设计,幸好它给了我们修改的机会 第一步:下载PackageResourceViewer插件,通过PackageContr ...

  7. funny_python 01 import antigravity

    在Python里面import antigravity 会发现另一个小彩蛋 Tada~ 其实就是打开了xkcd的一个python主题漫画 鼠标停留在图片上,还会看到标题: "I wrote ...

  8. JSTL标准标签库 (使用foreach打印集合)

    <%@page import="java.util.*"%><%@ page language= "java" contentType=&qu ...

  9. UNIX:高级环境编程 - 第十五章 IPC:进程间通信

    IPC(InterProcess Communication)进程间通信.为啥没有进程间通信,这是因为进程间都是同步的关系,不需要通信. 1.管道 1.1管道特点: (1)半双工的(即数据只能在一个方 ...

  10. .Net Mail SMTP 发送网络邮件

    刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...