摘要:讀了周勇老師的從零開始寫框架,感覺干貨還是挺多的。不過,這本書中的從零開始并不是指的零基礎,而是從無到有。還是先說說目前的感受吧。第五章講了的優化文件上傳和下載集成安全框架和框架。如果大家看了這本書有什么新的感悟,也歡迎分享給我。
讀了周勇老師的《從零開始寫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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68220.html
摘要:從零開始單排學設計模式的國服排位之旅,今天正式開啟目前段位定級賽這篇文章來總結下類圖,本來不打算講類圖的,因為我在學習設計模式的時候,一遇到有關的就會自動忽略,一看感覺就很復雜。關聯關系用實現箭頭來表示。 閱讀本文大概需要 3.5 分鐘。 本篇是設計模式系列的開篇,雖然之前也寫過相應的文章,但是因為種種原因后來斷掉了,而且發現之前寫的內容也很渣,不夠系統。 所以現在打算重寫,加上距離現...
摘要:轉眼工作一年了,想著寫點什么來總結一下我這個新人的起起伏伏。公司開始有培訓,福利也算不錯,于是我的學習斗志也被重新激發,工作之余繼續關于的學習。各種博客,這些博客內容包括多線程并發,集合源碼,編程技巧,面試題目。 前言:夏天到了,人也變得些許焦躁。轉眼工作一年了,想著寫點什么來總結一下我這個IT新人的起起伏伏。畢竟從剛入職不久,我這顆跳槽的心一直蠢蠢欲動。都怪自己大學不努力,在人生的許...
摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構建工具由遷移到,引發了很多開發者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為...
摘要:本文最早為雙十一而作,原標題雙大前端工程師讀書清單,以付費的形式發布在上。發布完本次預告后,捕捉到了一個友善的吐槽讀書清單也要收費。這本書便從的異步編程講起,幫助我們設計快速響應的網絡應用,而非簡單的頁面。 本文最早為雙十一而作,原標題雙 11 大前端工程師讀書清單,以付費的形式發布在 GitChat 上。發布之后在讀者圈群聊中和讀者進行了深入的交流,現免費分享到這里,不足之處歡迎指教...
摘要:本文最早為雙十一而作,原標題雙大前端工程師讀書清單,以付費的形式發布在上。發布完本次預告后,捕捉到了一個友善的吐槽讀書清單也要收費。這本書便從的異步編程講起,幫助我們設計快速響應的網絡應用,而非簡單的頁面。 本文最早為雙十一而作,原標題雙 11 大前端工程師讀書清單,以付費的形式發布在 GitChat 上。發布之后在讀者圈群聊中和讀者進行了深入的交流,現免費分享到這里,不足之處歡迎指教...
閱讀 3080·2021-11-24 10:47
閱讀 3831·2021-11-02 14:43
閱讀 2228·2021-09-26 10:15
閱讀 2253·2021-09-08 09:35
閱讀 560·2019-08-30 12:45
閱讀 2781·2019-08-29 17:04
閱讀 3214·2019-08-26 14:05
閱讀 1259·2019-08-26 12:10