摘要:读了周勇老师的从零开始写框架,感觉干货还是挺多的。不过,这本书中的从零开始并不是指的零基础,而是从无到有。还是先说说目前的感受吧。第五章讲了的优化文件上传和下载集成安全框架和框架。如果大家看了这本书有什么新的感悟,也欢迎分享给我。
读了周勇老师的《从零开始写javaweb框架》,感觉干货还是挺多的。想把自己的收获分享给大家。不过,这本书中的从零开始并不是指的零基础,而是从无到有。所以,还是建议有一定web基础的朋友们阅读,最好是对Spring的IOC、AOP有一定了解。总体印象
这本书一共有五章。首先要告诉大家,我没有读完,只是精读了前两章、粗读了三四章,第五章大致浏览了一下,以后如果还有什么新的感悟,还会再分享。还是先说说目前的感受吧。
看的出来,作者水平很高,这本书也差不多将web框架常用知识和框架脉络梳理了一遍。但是说它需要有一定基础的朋友们阅读主要有两个原因:
书中错误比较多,需要读者有一定的纠错能力。我在读第一章第二章的时候遇到了不少错误,主要都是一些细节性的错误。读者应该在遇到书中错误的时候,能够明白作者的意图并正确处理书中的细节问题。
书中对基础知识介绍较少,大部分都是直接贴代码,而且注释很少,读者应该能够看得懂这些代码。我就是在这里遇到了困难,在读一些比较困难的代码时失去了耐性,比如如何动态的将带有IOC注解的类注入到IOC容器。以至于后面的代码都没有细读。
大家如果还是不知道自己是否适合这本书,可以看一下豆瓣的书评。
收获即使如此,读了这本书我也收获颇丰,也学习到了作者的一些编程的小技巧,把他分享给大家,希望对大家有所帮助:
说到读取配置文件,大家会想到什么方法呢?
我首先想到的就是FileInputStream类,但是大家都知道这个类的使用是非常麻烦的。像我这样基础不牢的coder要在网上找个例子估计才能写。但书中给我们提供了一种非常简单的方法,令人耳目一新。
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
备注:此方法要求配置文件必须在项目的classpath下。
在封装通用jdbc的方法的时候我总是因为ResultSet和Entity类的转换问题而纠结。这里书中为我们介绍了ResultSetHandler这个类,这个类在用于将ResultSet转换为实体对象时十分有用,下面给大家一个例子,大家有兴趣的话可以了解一下,这是在apache的DBUtils的jar包下:
/** * 查询实体类 * */ public staticT queryEntry(Class entityClass, String sql, Object... params) { T entity = null; try { entity = queryRunner.query(getConnection(), sql, new BeanHandler (entityClass), params); } catch (SQLException e) { logger.error("query entry failure!", e); new RuntimeException(e); } finally { closeConnection(); } return entity; }
这里因为是我的弱点,我就详细介绍一下ResultSetHandler这个类,这个类有很多子类,于将查询到的ResultSet转换为不同种类的对象:
BeanHandler —— 返回Bean对象;
BeanListHandler —— 返回List对象;
BeanMapHandler —— 返回Map对象;
ArrayHandler —— 返回Object[]对象;
ArrayListHandler —— 返回List对象;
MapHandler —— 返回Map对象;
MapListHandler —— 返回List
ScalarHandler —— 返回某列的值;
ColumnListHandler —— 返回某列的值列表;
KeyedHandler —— 返回Map对象,需要指定列名;
它们的继承关系如图所示:
在获取Connection时为了保证线程安全,应该使用ThreadLocal将Connection包裹起来,这都是我在平时写代码时没有注意到的。
/** * 使用ThreadLocal保证Connection线程安全 */ private static final ThreadLocalconnectionHolder = new ThreadLocal<>();
单单使用ThreadLocal还并不完美,为了防止频繁的开启和关闭Connection我们还需要有一个数据库连接池,虽然我以前也用连接池,但是只是教程教的让用我就用,并没有理解其中的原理。常用的数据库连接池有DBCP 、C3P0。
内容介绍第三章之后我看的就不太仔细了,原因前面也说了,代码写的有点难懂,注释也少,很多都是在编写工具类。我是看着有点晕。也可能是我太菜了。让大家笑话了。这里就给大家大概介绍一下主要内容吧。
第三章讲的是IOC容器相关的知识,主要讲IOC容器如何加载Bean对象。
第四章讲的比较详细。第一部分从静态代理讲到动态代理,再讲到什么是JDK代理、CGlib代理、Spring的AOP机制最后讲到Spring + Aspect。
第二部分讲了ThreadLocal和事务。
第五章讲了 Action的优化、文件上传和下载、集成Shiro安全框架和CXF框架。
后面的我都是大概浏览了一下大概内容,并没有仔细的研究。大家也可以根据自己的需要学习其中的某一部分。
如果大家看了这本书有什么新的感悟,也欢迎分享给我。
这是黄勇老师的关于smart-framework的博客,大家如果对这个框架有兴趣的可以关注一下:https://my.oschina.net/huangy...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68220.html
摘要:从零开始单排学设计模式的国服排位之旅,今天正式开启目前段位定级赛这篇文章来总结下类图,本来不打算讲类图的,因为我在学习设计模式的时候,一遇到有关的就会自动忽略,一看感觉就很复杂。关联关系用实现箭头来表示。 阅读本文大概需要 3.5 分钟。 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统。 所以现在打算重写,加上距离现...
摘要:转眼工作一年了,想着写点什么来总结一下我这个新人的起起伏伏。公司开始有培训,福利也算不错,于是我的学习斗志也被重新激发,工作之余继续关于的学习。各种博客,这些博客内容包括多线程并发,集合源码,编程技巧,面试题目。 前言:夏天到了,人也变得些许焦躁。转眼工作一年了,想着写点什么来总结一下我这个IT新人的起起伏伏。毕竟从刚入职不久,我这颗跳槽的心一直蠢蠢欲动。都怪自己大学不努力,在人生的许...
摘要:前端每周清单半年盘点之与篇前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。与求同存异近日,宣布将的构建工具由迁移到,引发了很多开发者的讨论。 前端每周清单半年盘点之 React 与 ReactNative 篇 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为...
摘要:本文最早为双十一而作,原标题双大前端工程师读书清单,以付费的形式发布在上。发布完本次预告后,捕捉到了一个友善的吐槽读书清单也要收费。这本书便从的异步编程讲起,帮助我们设计快速响应的网络应用,而非简单的页面。 本文最早为双十一而作,原标题双 11 大前端工程师读书清单,以付费的形式发布在 GitChat 上。发布之后在读者圈群聊中和读者进行了深入的交流,现免费分享到这里,不足之处欢迎指教...
摘要:本文最早为双十一而作,原标题双大前端工程师读书清单,以付费的形式发布在上。发布完本次预告后,捕捉到了一个友善的吐槽读书清单也要收费。这本书便从的异步编程讲起,帮助我们设计快速响应的网络应用,而非简单的页面。 本文最早为双十一而作,原标题双 11 大前端工程师读书清单,以付费的形式发布在 GitChat 上。发布之后在读者圈群聊中和读者进行了深入的交流,现免费分享到这里,不足之处欢迎指教...
阅读 3079·2021-11-24 10:47
阅读 3831·2021-11-02 14:43
阅读 2227·2021-09-26 10:15
阅读 2251·2021-09-08 09:35
阅读 559·2019-08-30 12:45
阅读 2779·2019-08-29 17:04
阅读 3214·2019-08-26 14:05
阅读 1257·2019-08-26 12:10