讀了周勇老師的《從零開始寫javaweb框架》,感受乾貨仍是挺多的。想把本身的收穫分享給你們。不過,這本書中的從零開始並非指的零基礎,而是從無到有。因此,仍是建議有必定web基礎的朋友們閱讀,最好是對Spring的IOC、AOP有必定了解。
這本書一共有五章。首先要告訴你們,我沒有讀完,只是精讀了前兩章、粗讀了三四章,第五章大體瀏覽了一下,之後若是還有什麼新的感悟,還會再分享。仍是先說說目前的感覺吧。java
看的出來,做者水平很高,這本書也差很少將web框架經常使用知識和框架脈絡梳理了一遍。可是說它須要有必定基礎的朋友們閱讀主要有兩個緣由:web
你們若是仍是不知道本身是否適合這本書,能夠看一下豆瓣的書評。sql
即便如此,讀了這本書我也收穫頗豐,也學習到了做者的一些編程的小技巧,把他分享給你們,但願對你們有所幫助:數據庫
我首先想到的就是FileInputStream類,可是你們都知道這個類的使用是很是麻煩的。像我這樣基礎不牢的coder要在網上找個例子估計才能寫。但書中給咱們提供了一種很是簡單的方法,使人耳目一新。apache
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
備註:此方法要求配置文件必須在項目的classpath下。編程
/** * 查詢實體類 * */ public static <T> T queryEntry(Class<T> entityClass, String sql, Object... params) { T entity = null; try { entity = queryRunner.query(getConnection(), sql, new BeanHandler<T>(entityClass), params); } catch (SQLException e) { logger.error("query entry failure!", e); new RuntimeException(e); } finally { closeConnection(); } return entity; }
這裏由於是個人弱點,我就詳細介紹一下ResultSetHandler這個類,這個類有不少子類,於將查詢到的ResultSet轉換爲不一樣種類的對象:安全
它們的繼承關係如圖所示:框架
/** * 使用ThreadLocal保證Connection線程安全 */ private static final ThreadLocal<Connection> connectionHolder = new ThreadLocal<>();
第三章以後我看的就不太仔細了,緣由前面也說了,代碼寫的有點難懂,註釋也少,不少都是在編寫工具類。我是看着有點暈。也多是我太菜了。讓你們笑話了。這裏就給你們大概介紹一下主要內容吧。工具
第三章講的是IOC容器相關的知識,主要講IOC容器如何加載Bean對象。學習
第四章講的比較詳細。第一部分從靜態代理講到動態代理,再講到什麼是JDK代理、CGlib代理、Spring的AOP機制最後講到Spring + Aspect。
第二部分講了ThreadLocal和事務。
第五章講了 Action的優化、文件上傳和下載、集成Shiro安全框架和CXF框架。
後面的我都是大概瀏覽了一下大概內容,並無仔細的研究。你們也能夠根據本身的須要學習其中的某一部分。
若是你們看了這本書有什麼新的感悟,也歡迎分享給我。
這是黃勇老師的關於smart-framework的博客,你們若是對這個框架有興趣的能夠關注一下:https://my.oschina.net/huangy...