Spring overview
引子
接触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的更多相关文章
- 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 ...
- Spring 笔记(一)概念梳理
概念 预备知识 1. POJO POJO是Plain Old Java Object的缩写,是软件开发大师Martin Fowler提出的一个概念,指的是一个普通Java类.也就说,你随便编写一个Ja ...
- Spring Security(一) —— Architecture Overview
摘要: 原创出处 https://www.cnkirito.moe/spring-security-1/ 「老徐」欢迎转载,保留摘要,谢谢! 1 核心组件 一直以来我都想写一写Spring Secur ...
- 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 ...
- Spring学习笔记之Container overview
The Spring IoC container
- Spring 4.3.11.RELEASE文档阅读(一):overview
一.宏观概述中的体会和发现 Spring是组件式的框架,它允许我们只使用其一小部分.Spring所做的工作,就是不断的简化我们的操作.比如它的IOC容器,当我们自己应用设计模式,比如说:建造者.工厂. ...
- 20191224 Spring官方文档(Overview)
Spring框架概述 从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并提供对JDK 11 LTS的现成支持.建议将Java SE 8更新60作为 ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- Hello Spring Framework——依赖注入(DI)与控制翻转(IoC)
又到年关了,还有几天就是春节.趁最后还有些时间,复习一下Spring的官方文档. 写在前面的话: Spring是我首次开始尝试通过官方文档来学习的框架(以前学习Struts和Hibernate都大多是 ...
随机推荐
- DGV表头双行
try { if (e.RowIndex < 0) { RectangleF _rect = e.CellBounds; Pen _pen = new Pen(Color.Black); Pen ...
- inotifywait命令
[命令格式]: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ][命令原意]: inote file system wait[命令路径 ...
- LINUX退出当前进程——比较return、exit()
1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ...
- 最近使用JQuery Easyui 碰到的几个奇怪问题
最近项目想尝试Easyui来做做前端界面,但是刚开始就碰到几个问题,记录下来,免得忘了. 1. 点击添加或修改按钮后,弹出窗体,窗体内容参加“href”属性远程加载 问题:第一次弹出窗体正常,但是再次 ...
- php中$row=mysql_fetch_row()出错问题
在写php时用到这样一个问题,代码如下: $sql="select * from sina"; mysql_connect("localhost"," ...
- JSP(include指令)页面
<%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...
- 第四组 12月8号sprint会议
会议时间:12月8号,16:30会议地点:蛙鸣湖旁小树林 会议进程: 1.首先对到场人员进行点名 2.对程序主要功能进行讨论,每人都可以自由发言,然后分配每个成员的任务,并决定实现第一个功能: ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- poj 1276 Cash Machine(多重背包)
Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33444 Accepted: 12106 De ...
- git clone google代码库
git clone https://chromium.googlesource.com/chromium/src 发现有将近7G,但是速度太慢,老是失败,提示信息先后是"The remot ...