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都大多是 ...
随机推荐
- svn更新操作时提示database is locked
If you're on Windows version just let's do the next: Right click on the repo folder and go to Tortoi ...
- RabbitMQ的work queue(1)
http://www.rabbitmq.com/tutorials/tutorial-two-java.html 在第一个教程中,我们通过一个命名队列来发送消息和接受消息.在这一节,我们将创建一个工作 ...
- 双二次Lagrange 有限元计算特征值程序(基于iFEM)
function lambda = c0P2(h) %% Mesh [node,elem] = squarequadmesh([,,,],h); elem = elem(:,[,,,]); showm ...
- MySQL优化的奇技淫巧之STRAIGHT_JOIN
原文地址:http://huoding.com/2013/06/04/261 问题 通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下: SELECT post.* ...
- 新年PR交期回写,展望期由14天改为30天,FP_PR2SAP ;转单量改为100W;FP_PR2SAP_MOD_NEW
- 表有主外键约束时的delete 方法 2008
--1.禁用约束 ALTER TABLE abppmgr.MST_ITEMMASTER disable CONSTRAINT C0248833319_7676; --2.删除数据 truncate t ...
- mix_alternates_for_parent: TRUE
主替代料的消耗问题就没有了mix_alternates_for_parent: TRUEmix_alternate_per_unit_parent: TRUE D:\JDA\JDAv800\FP\in ...
- HRS(CRLF Injection)
[HRS(CRLF Injection)] CRLF是”回车 + 换行”(\r\n)的简称.在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CR ...
- WPF功能点
if ("TextBoxBase".Contains(Keyboard.FocusedElement.GetType().BaseType.Name)) { return; } 1 ...
- android虚拟机
参考:http://baike.baidu.com/link?url=06bC3y5DSQ7DQ_QbEr6hTfMNpmg2f-39w6FpU69xxkbNoJ5OR4N9xCKoMwMMGTZfF ...