摘要:讀了周勇老師的從零開始寫框架,感覺干貨還是挺多的。不過,這本書中的從零開始并不是指的零基礎(chǔ),而是從無到有。還是先說說目前的感受吧。第五章講了的優(yōu)化文件上傳和下載集成安全框架和框架。如果大家看了這本書有什么新的感悟,也歡迎分享給我。
讀了周勇老師的《從零開始寫javaweb框架》,感覺干貨還是挺多的。想把自己的收獲分享給大家。不過,這本書中的從零開始并不是指的零基礎(chǔ),而是從無到有。所以,還是建議有一定web基礎(chǔ)的朋友們閱讀,最好是對(duì)Spring的IOC、AOP有一定了解。總體印象
這本書一共有五章。首先要告訴大家,我沒有讀完,只是精讀了前兩章、粗讀了三四章,第五章大致瀏覽了一下,以后如果還有什么新的感悟,還會(huì)再分享。還是先說說目前的感受吧。
看的出來,作者水平很高,這本書也差不多將web框架常用知識(shí)和框架脈絡(luò)梳理了一遍。但是說它需要有一定基礎(chǔ)的朋友們閱讀主要有兩個(gè)原因:
書中錯(cuò)誤比較多,需要讀者有一定的糾錯(cuò)能力。我在讀第一章第二章的時(shí)候遇到了不少錯(cuò)誤,主要都是一些細(xì)節(jié)性的錯(cuò)誤。讀者應(yīng)該在遇到書中錯(cuò)誤的時(shí)候,能夠明白作者的意圖并正確處理書中的細(xì)節(jié)問題。
書中對(duì)基礎(chǔ)知識(shí)介紹較少,大部分都是直接貼代碼,而且注釋很少,讀者應(yīng)該能夠看得懂這些代碼。我就是在這里遇到了困難,在讀一些比較困難的代碼時(shí)失去了耐性,比如如何動(dòng)態(tài)的將帶有IOC注解的類注入到IOC容器。以至于后面的代碼都沒有細(xì)讀。
大家如果還是不知道自己是否適合這本書,可以看一下豆瓣的書評(píng)。
收獲即使如此,讀了這本書我也收獲頗豐,也學(xué)習(xí)到了作者的一些編程的小技巧,把他分享給大家,希望對(duì)大家有所幫助:
說到讀取配置文件,大家會(huì)想到什么方法呢?
我首先想到的就是FileInputStream類,但是大家都知道這個(gè)類的使用是非常麻煩的。像我這樣基礎(chǔ)不牢的coder要在網(wǎng)上找個(gè)例子估計(jì)才能寫。但書中給我們提供了一種非常簡(jiǎn)單的方法,令人耳目一新。
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
備注:此方法要求配置文件必須在項(xiàng)目的classpath下。
在封裝通用jdbc的方法的時(shí)候我總是因?yàn)镽esultSet和Entity類的轉(zhuǎn)換問題而糾結(jié)。這里書中為我們介紹了ResultSetHandler這個(gè)類,這個(gè)類在用于將ResultSet轉(zhuǎn)換為實(shí)體對(duì)象時(shí)十分有用,下面給大家一個(gè)例子,大家有興趣的話可以了解一下,這是在apache的DBUtils的jar包下:
/** * 查詢實(shí)體類 * */ 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; }
這里因?yàn)槭俏业娜觞c(diǎn),我就詳細(xì)介紹一下ResultSetHandler這個(gè)類,這個(gè)類有很多子類,于將查詢到的ResultSet轉(zhuǎn)換為不同種類的對(duì)象:
BeanHandler —— 返回Bean對(duì)象;
BeanListHandler —— 返回List對(duì)象;
BeanMapHandler —— 返回Map對(duì)象;
ArrayHandler —— 返回Object[]對(duì)象;
ArrayListHandler —— 返回List對(duì)象;
MapHandler —— 返回Map對(duì)象;
MapListHandler —— 返回List
ScalarHandler —— 返回某列的值;
ColumnListHandler —— 返回某列的值列表;
KeyedHandler —— 返回Map對(duì)象,需要指定列名;
它們的繼承關(guān)系如圖所示:
在獲取Connection時(shí)為了保證線程安全,應(yīng)該使用ThreadLocal將Connection包裹起來,這都是我在平時(shí)寫代碼時(shí)沒有注意到的。
/** * 使用ThreadLocal保證Connection線程安全 */ private static final ThreadLocalconnectionHolder = new ThreadLocal<>();
單單使用ThreadLocal還并不完美,為了防止頻繁的開啟和關(guān)閉Connection我們還需要有一個(gè)數(shù)據(jù)庫(kù)連接池,雖然我以前也用連接池,但是只是教程教的讓用我就用,并沒有理解其中的原理。常用的數(shù)據(jù)庫(kù)連接池有DBCP 、C3P0。
內(nèi)容介紹第三章之后我看的就不太仔細(xì)了,原因前面也說了,代碼寫的有點(diǎn)難懂,注釋也少,很多都是在編寫工具類。我是看著有點(diǎn)暈。也可能是我太菜了。讓大家笑話了。這里就給大家大概介紹一下主要內(nèi)容吧。
第三章講的是IOC容器相關(guān)的知識(shí),主要講IOC容器如何加載Bean對(duì)象。
第四章講的比較詳細(xì)。第一部分從靜態(tài)代理講到動(dòng)態(tài)代理,再講到什么是JDK代理、CGlib代理、Spring的AOP機(jī)制最后講到Spring + Aspect。
第二部分講了ThreadLocal和事務(wù)。
第五章講了 Action的優(yōu)化、文件上傳和下載、集成Shiro安全框架和CXF框架。
后面的我都是大概瀏覽了一下大概內(nèi)容,并沒有仔細(xì)的研究。大家也可以根據(jù)自己的需要學(xué)習(xí)其中的某一部分。
如果大家看了這本書有什么新的感悟,也歡迎分享給我。
這是黃勇老師的關(guān)于smart-framework的博客,大家如果對(duì)這個(gè)框架有興趣的可以關(guān)注一下:https://my.oschina.net/huangy...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68220.html
摘要:從零開始單排學(xué)設(shè)計(jì)模式的國(guó)服排位之旅,今天正式開啟目前段位定級(jí)賽這篇文章來總結(jié)下類圖,本來不打算講類圖的,因?yàn)槲以趯W(xué)習(xí)設(shè)計(jì)模式的時(shí)候,一遇到有關(guān)的就會(huì)自動(dòng)忽略,一看感覺就很復(fù)雜。關(guān)聯(lián)關(guān)系用實(shí)現(xiàn)箭頭來表示。 閱讀本文大概需要 3.5 分鐘。 本篇是設(shè)計(jì)模式系列的開篇,雖然之前也寫過相應(yīng)的文章,但是因?yàn)榉N種原因后來斷掉了,而且發(fā)現(xiàn)之前寫的內(nèi)容也很渣,不夠系統(tǒng)。 所以現(xiàn)在打算重寫,加上距離現(xiàn)...
摘要:轉(zhuǎn)眼工作一年了,想著寫點(diǎn)什么來總結(jié)一下我這個(gè)新人的起起伏伏。公司開始有培訓(xùn),福利也算不錯(cuò),于是我的學(xué)習(xí)斗志也被重新激發(fā),工作之余繼續(xù)關(guān)于的學(xué)習(xí)。各種博客,這些博客內(nèi)容包括多線程并發(fā),集合源碼,編程技巧,面試題目。 前言:夏天到了,人也變得些許焦躁。轉(zhuǎn)眼工作一年了,想著寫點(diǎn)什么來總結(jié)一下我這個(gè)IT新人的起起伏伏。畢竟從剛?cè)肼毑痪?,我這顆跳槽的心一直蠢蠢欲動(dòng)。都怪自己大學(xué)不努力,在人生的許...
摘要:前端每周清單半年盤點(diǎn)之與篇前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。與求同存異近日,宣布將的構(gòu)建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點(diǎn)之 React 與 ReactNative 篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為...
摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...
摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...
閱讀 3095·2021-11-24 10:47
閱讀 3853·2021-11-02 14:43
閱讀 2244·2021-09-26 10:15
閱讀 2303·2021-09-08 09:35
閱讀 580·2019-08-30 12:45
閱讀 2788·2019-08-29 17:04
閱讀 3221·2019-08-26 14:05
閱讀 1272·2019-08-26 12:10