成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從零開始的WEB框架——感悟

MRZYD / 1336人閱讀

摘要:讀了周勇老師的從零開始寫框架,感覺干貨還是挺多的。不過,這本書中的從零開始并不是指的零基礎(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 static  T 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對(duì)象;

ScalarHandler —— 返回某列的值;

ColumnListHandler —— 返回某列的值列表;

KeyedHandler —— 返回Map對(duì)象,需要指定列名;

它們的繼承關(guān)系如圖所示:

在獲取Connection時(shí)為了保證線程安全,應(yīng)該使用ThreadLocal將Connection包裹起來,這都是我在平時(shí)寫代碼時(shí)沒有注意到的。

    /**
     * 使用ThreadLocal保證Connection線程安全
     */
    private static final ThreadLocal connectionHolder = 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

相關(guān)文章

  • 從零開始單排學(xué)設(shè)計(jì)模式「UML類圖」定級(jí)賽

    摘要:從零開始單排學(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)...

    Loong_T 評(píng)論0 收藏0
  • Java開發(fā)工作一年畢業(yè)生感悟

    摘要:轉(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é)不努力,在人生的許...

    Brenner 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 React 與 ReactNative 篇

    摘要:前端每周清單半年盤點(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);分為...

    Barry_Ng 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(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)分享到這里,不足之處歡迎指教...

    happen 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(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)分享到這里,不足之處歡迎指教...

    余學(xué)文 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<