關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
Java EE互聯(lián)網(wǎng)輕量級(jí)框架整合開(kāi)發(fā)
當(dāng)前已經(jīng)是移動(dòng)互聯(lián)網(wǎng)時(shí)代,本書(shū)主要介紹當(dāng)前Java互聯(lián)網(wǎng)的主流框架SSM(Spring+Spring MVC+MyBatis,簡(jiǎn)稱SSM,下同)組合和Redis(NoSQL)介紹,這些是Java互聯(lián)網(wǎng)的基礎(chǔ)。首先介紹SSM的大概狀況和各類技術(shù)在互聯(lián)網(wǎng)中的作用,和一些框架中常用的設(shè)計(jì)模式;跟著詳細(xì)SSM三大框架的應(yīng)用和實(shí)現(xiàn)原理,介紹原理的時(shí)候會(huì)結(jié)合設(shè)計(jì)模式一起探討,使得讀者能夠明了,同時(shí)在Spring AOP技術(shù)中加入數(shù)據(jù)庫(kù)技術(shù)中的隔離層,和其傳播行為的討論,使得讀者更加明確如何使用Spring管理數(shù)據(jù)庫(kù)事務(wù)。結(jié)合Java介紹Redis技術(shù),也是全國(guó)首創(chuàng),同時(shí)更符合Java開(kāi)發(fā)者的需求。然后通過(guò)搶紅包這樣的熱門話題討論秒殺技術(shù),主要涉及互聯(lián)網(wǎng)最重要,最核心和最困難的問(wèn)題高并發(fā)下的數(shù)據(jù)安全問(wèn)題。最后給出一些常見(jiàn)的使用錯(cuò)誤,不良習(xí)慣,典型應(yīng)用和技巧,幫助讀者用好SSM框架。
適讀人群 :SSM、Java、Redis
涵蓋Java EE主流框架技術(shù)SSM+Redis,快速上手開(kāi)發(fā)
用Spring MVC整合MyBatis框架技術(shù)
用Spring整合Redis在Java互聯(lián)網(wǎng)技術(shù)上的應(yīng)用
通過(guò)秒殺、搶紅包講解互聯(lián)網(wǎng)高并發(fā)業(yè)務(wù)
隨著移動(dòng)互聯(lián)網(wǎng)的興起以及手機(jī)和平板電腦的普及,Java開(kāi)發(fā)方向發(fā)生了很大變化,漸漸從管理系統(tǒng)走向了互聯(lián)網(wǎng)系統(tǒng);ヂ(lián)網(wǎng)系統(tǒng)的要求是大數(shù)據(jù)、高并發(fā)、高響應(yīng),而非管理系統(tǒng)的少數(shù)據(jù)、低并發(fā)和緩慢響應(yīng)。為順應(yīng)技術(shù)發(fā)展趨勢(shì),2016年春季筆者寫(xiě)了一本關(guān)于MyBatis的著作《深入淺出MyBatis技術(shù)原理與實(shí)戰(zhàn)》,作為國(guó)內(nèi)第一本關(guān)于MyBatis技術(shù)的著作,該書(shū)受到了業(yè)內(nèi)的廣泛肯定。與此同時(shí),電子工業(yè)出版社編輯汪達(dá)文給了我一個(gè)很好的建議,她建議寫(xiě)一本Java合集,這更貼近開(kāi)發(fā)工作的實(shí)際需求。在移動(dòng)互聯(lián)網(wǎng)興起的時(shí)代,Spring+Spring MVC+MyBatis(SSM)的Java組合已經(jīng)成為時(shí)代的主流,伴隨著NoSQL(緩存)的廣泛應(yīng)用,Redis成了主要的NoSQL工具,這些都是當(dāng)今移動(dòng)互聯(lián)網(wǎng)最為流行的技術(shù),于是筆者打算竭盡所能寫(xiě)一本SSM+Redis的合集,這就是本書(shū)創(chuàng)作的緣起。
移動(dòng)互聯(lián)網(wǎng)的新要求
高并發(fā):舉個(gè)例子,大公司企業(yè)ERP應(yīng)用,有1萬(wàn)名員工使用,同時(shí)在線的用戶可能只有數(shù)百人,而操作一個(gè)業(yè)務(wù)的同一個(gè)數(shù)據(jù)的可能只有幾個(gè)人,其系統(tǒng)一般不會(huì)存在高并發(fā)的壓力,使用傳統(tǒng)程序和數(shù)據(jù)庫(kù)完全可以應(yīng)付。在互聯(lián)網(wǎng)中一件熱門的商品,比如新版小米手機(jī),可能剛一上市就有成千上萬(wàn)的請(qǐng)求到達(dá)服務(wù)器,要求瞬間執(zhí)行數(shù)以萬(wàn)計(jì)的數(shù)據(jù)操作,對(duì)性能要求高,操作不當(dāng)容易造成網(wǎng)站癱瘓,引發(fā)網(wǎng)站的生存危機(jī)。
高響應(yīng):企業(yè)管理系統(tǒng)可以緩慢處理一些業(yè)務(wù),而在高并發(fā)的互聯(lián)網(wǎng)系統(tǒng)中,卻不可以,按照互聯(lián)網(wǎng)的要求一般以5秒為上限,超過(guò)5秒后響應(yīng),用戶體驗(yàn)不好,從而影響用戶忠誠(chéng)度,而這些往往需要在高并發(fā)和大數(shù)據(jù)量的場(chǎng)景下實(shí)現(xiàn)。
數(shù)據(jù)一致性:由于高并發(fā),多個(gè)線程對(duì)同一數(shù)據(jù)同時(shí)訪問(wèn),需要保證數(shù)據(jù)的一致性,比如電商網(wǎng)站的金額、商品庫(kù)存不能出錯(cuò),還要保證其性能不能太差,這是在管理系統(tǒng)中不會(huì)出現(xiàn)的場(chǎng)景。
技術(shù)復(fù)雜化:在互聯(lián)網(wǎng)中流行許多新技術(shù),比如常見(jiàn)的NoSQL(Redis、MongoDB),又如MQ、RPC框架、ZooKeeper、大數(shù)據(jù)、分布式等技術(shù)。
為什么選擇SSM框架+Redis的開(kāi)發(fā)模式
首先,Struts2框架和Spring結(jié)合,多年來(lái)改變不了臃腫的老毛病,更為嚴(yán)重的是近年來(lái)多次出現(xiàn)的漏洞問(wèn)題,使得其名聲和使用率大降。這個(gè)時(shí)候Spring MVC框架成了新一代MVC框架的主流。它原生于Spring框架,可以無(wú)縫對(duì)接Spring的核心技術(shù)。與Struts不同,它的流程模塊化,沒(méi)有那么多臃腫的類,所以互聯(lián)網(wǎng)應(yīng)用的框架大部分使用的是Spring MVC。
其次,目前企業(yè)的Java應(yīng)用中,Spring框架是必須的,Spring的核心是IoC(控制反轉(zhuǎn)),它是一個(gè)大容器,方便組裝和管理各類系統(tǒng)內(nèi)外部資源,同時(shí)支持AOP(面向切面編程),這是對(duì)面向?qū)ο蟮难a(bǔ)充,目前廣泛用于日志和數(shù)據(jù)庫(kù)事務(wù)控制,減少了大量的重復(fù)代碼,使得程序更為清晰。因?yàn)镾pring可以使模塊解耦,控制對(duì)象之間的協(xié)作,所以Spring框架是目前Java最為流行的框架,幾乎沒(méi)有之一。
最后,對(duì)于Hibernate而言,筆者感慨最多,在需要存儲(chǔ)過(guò)程或者復(fù)雜SQL時(shí),它的映射關(guān)系幾乎完全用不上,所有的問(wèn)題都需要自己敲代碼處理。作為全映射的框架,它的致命缺點(diǎn)是沒(méi)有辦法完全掌控?cái)?shù)據(jù)庫(kù)的SQL,而優(yōu)化SQL是高并發(fā)、高響應(yīng)系統(tǒng)的必然要求,這是互聯(lián)網(wǎng)系統(tǒng)的普遍特性,所以Hibernate在互聯(lián)網(wǎng)系統(tǒng)中被排除了。而另一個(gè)持久層框架MyBatis,它需要編寫(xiě)SQL、提供映射規(guī)則,不過(guò)它加入了動(dòng)態(tài)SQL、自動(dòng)映射、接口編程等功能使得它簡(jiǎn)單易用,同時(shí)支持SQL優(yōu)化、動(dòng)態(tài)綁定,并滿足高并發(fā)和高響應(yīng)的要求,所以它成為最流行的Java互聯(lián)網(wǎng)持久框架。
NoSQL的成功在于,首先它是基于內(nèi)存的,也就是數(shù)據(jù)放在內(nèi)存中,而不是像數(shù)據(jù)庫(kù)那樣把數(shù)據(jù)放在磁盤(pán)上,而內(nèi)存的讀取速度是磁盤(pán)讀取速度的幾十倍到上百倍,所以NoSQL工具的速度遠(yuǎn)比數(shù)據(jù)庫(kù)讀取速度要快得多,滿足了高響應(yīng)的要求。即使NoSQL將數(shù)據(jù)放在磁盤(pán)中,它也是一種半結(jié)構(gòu)化的數(shù)據(jù)格式,讀取到解析的復(fù)雜度遠(yuǎn)比數(shù)據(jù)庫(kù)要簡(jiǎn)單,這是因?yàn)閿?shù)據(jù)庫(kù)存儲(chǔ)的是經(jīng)過(guò)結(jié)構(gòu)化、多范式等有復(fù)雜規(guī)則的數(shù)據(jù),還原為內(nèi)存結(jié)構(gòu)的速度較慢。NoSQL在很大程度上滿足了高并發(fā)、快速讀/寫(xiě)和響應(yīng)的要求,所以它也是Java互聯(lián)網(wǎng)系統(tǒng)的利器。于是兩種NoSQL的工具Redis和MongoDB流行起來(lái),尤其是Redis已經(jīng)成為了主要的NoSQL工具,本書(shū)會(huì)詳細(xì)介紹它的常用方法。
基于以上原因,Spring+Spring MVC +MyBatis已經(jīng)成了Java互聯(lián)網(wǎng)時(shí)代的主流框架,而Redis緩存已經(jīng)成了主流的NoSQL技術(shù),筆者愿意將自己所掌握的知識(shí)分享給大家,為目前奮斗在SSM和Redis戰(zhàn)線上的同行們奉獻(xiàn)一本有價(jià)值的參考書(shū),給一些準(zhǔn)備進(jìn)入這個(gè)行業(yè)的新手一定的幫助和指導(dǎo)。
本書(shū)的特點(diǎn)
全書(shū)具備五大特點(diǎn)。
實(shí)用性:全書(shū)內(nèi)容來(lái)自于筆者多年互聯(lián)網(wǎng)實(shí)踐開(kāi)發(fā)工作,理論結(jié)合實(shí)際應(yīng)用。
理論性:突出基礎(chǔ)理念,結(jié)合設(shè)計(jì)模式闡述框架的實(shí)現(xiàn)原理和應(yīng)用理念,讓讀者知其然也知其所以然。
與時(shí)俱進(jìn):介紹最新框架技術(shù),與當(dāng)前互聯(lián)網(wǎng)企業(yè)保持同步,比如全注解搭建SSM框架和Redis的應(yīng)用,使得讀者能夠把最新技術(shù)應(yīng)用到實(shí)際的工作中去。
突出熱點(diǎn)和重點(diǎn):著重介紹MyBatis實(shí)踐應(yīng)用,Spring數(shù)據(jù)庫(kù)及事務(wù)應(yīng)用,使用Spring介紹Redis實(shí)踐應(yīng)用、高并發(fā)和鎖等互聯(lián)網(wǎng)熱門技術(shù)的熱點(diǎn)和重點(diǎn)。
性能要求突出:這是移動(dòng)互聯(lián)網(wǎng)的要求,因?yàn)榛ヂ?lián)網(wǎng)面對(duì)大數(shù)據(jù)和高并發(fā),體現(xiàn)互聯(lián)網(wǎng)企業(yè)真實(shí)需要。
本書(shū)的內(nèi)容安排
本書(shū)基于一線企業(yè)的實(shí)際應(yīng)用要求,介紹了Java互聯(lián)網(wǎng)最流行的框架技術(shù),內(nèi)容全面,以實(shí)際應(yīng)用為導(dǎo)向,取舍明確,尤其對(duì)于技術(shù)的重點(diǎn)、難點(diǎn)解釋得深入淺出,案例豐富,具體來(lái)說(shuō)本書(shū)在體例上分為六大部分。
第1部分,首先講解基礎(chǔ),讓讀者對(duì)SSM框架里的每一門技術(shù)的主要作用有所了解。然后介紹SSM框架的主要設(shè)計(jì)模式,它們有助于從底層深入理解框架。
第2部分,講解MyBatis的基礎(chǔ)應(yīng)用,包括其主要組成、配置、映射器、動(dòng)態(tài)SQL,并且深入MyBatis的底層運(yùn)行原理和插件,詳細(xì)討論它們的高級(jí)應(yīng)用。
第3部分,講解Spring IoC和Spring AOP。掌握Spring如何通過(guò)IoC管理資源,然后通過(guò)設(shè)計(jì)模式討論AOP的實(shí)現(xiàn)原理及其使用方法、實(shí)踐。討論Spring對(duì)數(shù)據(jù)庫(kù)的支持,如何整合MyBatis,并且著重討論了Spring數(shù)據(jù)庫(kù)事務(wù)的相關(guān)內(nèi)容,包括數(shù)據(jù)庫(kù)隔離級(jí)別和傳播行為的應(yīng)用。
第4部分,講解Spring MVC主要的流程、HandlerMapping的應(yīng)用、控制器Controller、處理適配器(HandlerAdapter)、視圖和視圖解析器,然后討論傳遞參數(shù)、注解、數(shù)據(jù)校驗(yàn)、消息轉(zhuǎn)換和國(guó)際化等應(yīng)用。
第5部分,掌握NoSQL的優(yōu)勢(shì)和應(yīng)用方法,掌握Redis的常用數(shù)據(jù)類型和主要命令,以及一些基本的特性(比如事務(wù))和用法,并教會(huì)你在Java和Spring環(huán)境中使用它。
第6部分,SSM框架+Redis的實(shí)戰(zhàn),通過(guò)全注解的方式搭建SSM框架,講解Redis應(yīng)用,并展現(xiàn)了互聯(lián)網(wǎng)的核心問(wèn)題——高并發(fā)和鎖的問(wèn)題。介紹了通過(guò)悲觀鎖、樂(lè)觀鎖和Redis Lua語(yǔ)言方案來(lái)解決高并發(fā)和鎖的問(wèn)題。
和讀者的約定
為了方便論述,我們進(jìn)行以下約定。
import語(yǔ)句一般不出現(xiàn)在代碼中,主要是為了縮減篇幅,可以使用IDE自動(dòng)導(dǎo)入,除非是筆者認(rèn)為有必要的場(chǎng)景、一些重要的實(shí)例它才會(huì)出現(xiàn)在代碼中。
本書(shū)的例子大部分使用附錄A中的數(shù)據(jù)模型,附錄A中有基本的論述和對(duì)應(yīng)的SQL語(yǔ)句。
對(duì)于普通的POJO,筆者大部分都會(huì)以“/**setter and getter**/”代替POJO的setter和getter方法,類似這樣:
public class Role {
private Long id;
private String roleName;
private String note;
/**setter and getter**/
}
讀者可以用IDE生成這些屬性的setter和getter方法,這樣做主要是為了節(jié)省篇幅,突出重點(diǎn),也有利于讀者的閱讀。當(dāng)然在一些特別重要的和使用廣泛的場(chǎng)景,比如MyBatis入門、SSM框架整合等場(chǎng)景才會(huì)給出全量代碼,以便讀者進(jìn)行編碼學(xué)習(xí)。
在默認(rèn)情況下,筆者使用互聯(lián)網(wǎng)最常用的MySQL數(shù)據(jù)庫(kù),當(dāng)使用其他數(shù)據(jù)庫(kù)時(shí),筆者會(huì)事先加以說(shuō)明。
本書(shū)采用MyBatis的版本是3.4.1,Spring的版本是4.3.2,Redis的版本是3.2.4,在實(shí)踐的過(guò)程中讀者需要注意版本之間的差異。
本書(shū)的目標(biāo)讀者
閱讀本書(shū),讀者要掌握以下知識(shí):Java編程基礎(chǔ)、Java EE基礎(chǔ)(JSP、Servlet等)及數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(本書(shū)以互聯(lián)網(wǎng)數(shù)據(jù)庫(kù)MySQL為主)。本書(shū)以互聯(lián)網(wǎng)企業(yè)最廣泛使用的技術(shù)框架為中心講解Java EE技術(shù),從入門講解到實(shí)踐,適合有志于從事Java EE開(kāi)發(fā)的各類人員閱讀,通過(guò)學(xué)習(xí)本書(shū)能夠有效提高技術(shù)能力,并且將知識(shí)點(diǎn)應(yīng)用到實(shí)際的企業(yè)工作當(dāng)中去。本書(shū)也可以作為大中專院校計(jì)算機(jī)專業(yè)的教材,幫助在校學(xué)生學(xué)習(xí)企業(yè)實(shí)際應(yīng)用,當(dāng)然你也可以把本書(shū)當(dāng)作一本工作手冊(cè)進(jìn)行查閱。
致謝
本書(shū)的成功出版,要感謝電子工業(yè)出版社的編輯們,沒(méi)有他們的辛苦付出,絕對(duì)沒(méi)有本書(shū)的成功出版,尤其是編輯汪達(dá)文,她啟發(fā)我創(chuàng)作本書(shū),并且在寫(xiě)作過(guò)程中給了我很多的建議和幫助,她為此付出了很多時(shí)間和精力。
在撰寫(xiě)本書(shū)的過(guò)程中,得到了我的師兄周吉文的大力支持,他統(tǒng)稿了全書(shū),也幫助我編寫(xiě)了部分章節(jié)的內(nèi)容;同時(shí)還得到梁華輝和譚茂華兩位好友的協(xié)助,他們以過(guò)硬的技術(shù)為我排除了不少錯(cuò)誤,同時(shí)也給了我很多很好的建議,并撰寫(xiě)了一些很好的實(shí)例;還要感謝我的姐姐楊堅(jiān),她撰寫(xiě)了部分內(nèi)容,并對(duì)書(shū)中那些晦澀難懂的句子進(jìn)行了潤(rùn)色,在此對(duì)他們的辛苦付出表示最誠(chéng)摯的感謝。
互聯(lián)網(wǎng)技術(shù)博大精深,涉及的技術(shù)門類特別多,甚至跨行業(yè)也特別頻繁,技術(shù)更新較快。撰寫(xiě)本書(shū)時(shí)筆者也遇到了一些困難,涉及的知識(shí)十分廣泛,對(duì)技術(shù)要求也更高,出錯(cuò)的概率也大大增加,正如沒(méi)有完美的程序一樣,也沒(méi)有完美的書(shū),一切都需要一個(gè)完善的過(guò)程,所以尊敬的讀者,如果對(duì)本書(shū)有任何意見(jiàn)或建議,歡迎發(fā)送郵件(ykzhen2013@163.com),或者在博客(http://blog.csdn.net/ykzhen2015)上留言,以便于本書(shū)的修訂。
楊開(kāi)振
2017年6月
楊開(kāi)振,擁有十余年一線Java開(kāi)發(fā)工作經(jīng)驗(yàn),熱衷于Java互聯(lián)網(wǎng)技術(shù)方向研究,目前從事Java互聯(lián)網(wǎng)技術(shù)在線教育,著有暢銷書(shū)《深入淺出MyBatis技術(shù)原理與實(shí)戰(zhàn)》。
周吉文,高級(jí)工程師,曾獲廣東省科技進(jìn)步一等獎(jiǎng),曾任國(guó)家“863”計(jì)劃項(xiàng)目軟件組組長(zhǎng),擔(dān)任珠海市第二人民醫(yī)院信息部主任多年,有豐富的項(xiàng)目實(shí)施和管理經(jīng)驗(yàn)。
梁華輝,資深Java開(kāi)發(fā)專家,有豐富的企業(yè)級(jí)應(yīng)用及Web項(xiàng)目的開(kāi)發(fā)經(jīng)驗(yàn)。對(duì)軟件設(shè)計(jì)模式和代碼整潔方面有深入理解,對(duì)Spring、Hibernate等主流開(kāi)源框架有深入研究。
譚茂華,資深Java開(kāi)發(fā)專家,擁有十余年供應(yīng)鏈管理、金融、物聯(lián)網(wǎng)等行業(yè)大型系統(tǒng)軟件開(kāi)發(fā)經(jīng)驗(yàn)。熱衷于軟件架構(gòu)、軟件研發(fā)過(guò)程控制、Java開(kāi)源技術(shù)(尤其是Spring體系技術(shù))的研究。
第1部分 入門和技術(shù)基礎(chǔ)
第1章 認(rèn)識(shí)SSM框架和Redis 2
1.1 Spring框架 2
1.2 MyBatis簡(jiǎn)介 6
1.3 Spring MVC簡(jiǎn)介 11
1.4 最流行的NoSQL——Redis 12
1.5 SSM+Redis結(jié)構(gòu)框圖及概述 13
第2章 Java設(shè)計(jì)模式 15
2.1 Java反射技術(shù) 15
2.2 動(dòng)態(tài)代理模式和責(zé)任鏈模式 19
2.3 觀察者(Observer)模式 30
2.4 工廠模式和抽象工廠模式 35
2.5 建造者(Builder)模式 38
2.6 總結(jié) 41
第2部分 互聯(lián)網(wǎng)持久框架——MyBatis
第3章 認(rèn)識(shí)MyBatis核心組件 44
3.1 持久層的概念和MyBatis的特點(diǎn) 44
3.2 準(zhǔn)備MyBatis環(huán)境 45
3.3 MyBatis的核心組件 46
3.4 SqlSessionFactory(工廠接口) 47
3.5 SqlSession 50
3.6 映射器 51
3.7 生命周期 55
3.8 實(shí)例 57
第4章 MyBatis配置 63
4.1 概述 63
4.2 properties屬性 64
4.3 settings設(shè)置 66
4.4 typeAliases別名 69
4.5 typeHandler類型轉(zhuǎn)換器 72
4.6 ObjectFactory(對(duì)象工廠) 87
4.7 插件 89
4.8 environments(運(yùn)行環(huán)境) 89
4.9 databaseIdProvider數(shù)據(jù)庫(kù)廠商標(biāo)識(shí) 95
4.10 引入映射器的方法 99
第5章 映射器 102
5.1 概述 102
5.2 select元素——查詢語(yǔ)句 103
5.3 insert元素——插入語(yǔ)句 112
5.4 update元素和delete元素 114
5.5 sql元素 115
5.6 參數(shù) 116
5.7 resultMap元素 118
5.8 級(jí)聯(lián) 120
5.9 緩存 143
5.10 存儲(chǔ)過(guò)程 149
第6章 動(dòng)態(tài)SQL 155
6.1 概述 155
6.2 if元素 156
6.3 choose、when、otherwise元素 156
6.4 trim、where、set元素 157
6.5 foreach元素 159
6.6 用test的屬性判斷字符串 159
6.7 bind元素 160
第7章 MyBatis的解析和運(yùn)行原理 162
7.1 構(gòu)建SqlSessionFactory過(guò)程 163
7.2 SqlSession運(yùn)行過(guò)程 168
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的代理和反射設(shè)計(jì) 183
8.4 常用的工具類——MetaObject 186
8.5 插件開(kāi)發(fā)過(guò)程和實(shí)例 187
8.6 總結(jié) 205
第3部分 Spring基礎(chǔ)
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.3 Spring IoC容器 215
9.4 小結(jié) 223
第10章 裝配Spring Bean 224
10.1 依賴注入的3種方式 224
10.2 裝配Bean概述 227
10.3 通過(guò)XML配置裝配Bean 228
10.4 通過(guò)注解裝配Bean 235
10.5 裝配的混合使用 246
10.6 使用Profile 249
10.7 加載屬性(properties)文件 254
10.8 條件化裝配Bean 258
10.9 Bean的作用域 259
10.10 使用Spring表達(dá)式(Spring EL) 261
第11章 面向切面編程 267
11.1 一個(gè)簡(jiǎn)單的約定游戲 267
11.2 Spring AOP的基本概念 274
11.3 使用@AspectJ注解開(kāi)發(fā)Spring AOP 280
11.4 使用XML配置開(kāi)發(fā)Spring AOP 293
11.5 經(jīng)典Spring AOP應(yīng)用程序 299
11.6 多個(gè)切面 301
11.7 小結(jié) 306
第12章 Spring和數(shù)據(jù)庫(kù)編程 307
12.1 傳統(tǒng)的JDBC代碼的弊端 307
12.2 配置數(shù)據(jù)庫(kù)資源 309
12.3 JDBC代碼失控的解決方案——jdbcTemplate 311
12.4 MyBatis-Spring項(xiàng)目 317
第13章 深入Spring數(shù)據(jù)庫(kù)事務(wù)管理 330
13.1 Spring數(shù)據(jù)庫(kù)事務(wù)管理器的設(shè)計(jì) 331
13.2 編程式事務(wù) 336
13.3 聲明式事務(wù) 337
13.4 數(shù)據(jù)庫(kù)的相關(guān)知識(shí) 343
13.5 選擇隔離級(jí)別和傳播行為 347
13.6 在Spring+MyBatis組合中使用事務(wù) 350
13.7 @Transactional的自調(diào)用失效問(wèn)題 358
13.8 典型錯(cuò)誤用法的剖析 363
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程 370
14.1 MVC設(shè)計(jì)概述 370
14.2 Spring MVC初始化 378
14.3 Spring MVC開(kāi)發(fā)流程詳解 389
第15章 深入Spring MVC組件開(kāi)發(fā) 399
15.1 控制器接收各類請(qǐng)求參數(shù) 399
15.2 重定向 409
15.3 保存并獲取屬性參數(shù) 412
15.4 攔截器 417
15.5 驗(yàn)證表單 424
15.6 數(shù)據(jù)模型 432
15.7 視圖和視圖解析器 434
15.8 上傳文件 441
第16章 Spring MVC高級(jí)應(yīng)用 449
16.1 Spring MVC的數(shù)據(jù)轉(zhuǎn)換和格式化 449
16.2 為控制器添加通知 466
16.3 處理異常 470
16.4 國(guó)際化 471
第5部分 Redis應(yīng)用
第17章 Redis概述 480
17.1 Redis在Java Web中的應(yīng)用 481
17.2 Redis基本安裝和使用 483
17.3 Redis的Java API 486
17.4 簡(jiǎn)介Redis的6種數(shù)據(jù)類型 494
17.5 Redis和數(shù)據(jù)庫(kù)的異同 495
第18章 Redis數(shù)據(jù)結(jié)構(gòu)常用命令 496
18.1 Redis數(shù)據(jù)結(jié)構(gòu)——字符串 497
18.2 Redis數(shù)據(jù)結(jié)構(gòu)——哈希 502
18.3 Redis數(shù)據(jù)結(jié)構(gòu)——鏈表(linked-list) 506
18.4 Redis數(shù)據(jù)結(jié)構(gòu)——集合 513
18.5 Redis數(shù)據(jù)結(jié)構(gòu)——有序集合 516
18.6 基數(shù)——HyperLogLog 522
第19章 Redis的一些常用技術(shù) 525
19.1 Redis的基礎(chǔ)事務(wù) 526
19.2 探索Redis事務(wù)回滾 528
19.3 使用watch命令監(jiān)控事務(wù) 529
19.4 流水線(pipelined) 532
19.5 發(fā)布訂閱 534
19.6 超時(shí)命令 538
19.7 使用Lua語(yǔ)言 540
19.8 小結(jié) 547
第20章 Redis配置 548
20.1 Redis基礎(chǔ)配置文件 548
20.2 Redis備份(持久化) 549
20.3 Redis內(nèi)存回收策略 552
20.4 復(fù)制 553
20.5 哨兵(Sentinel)模式 556
第21章 Spring緩存機(jī)制和Redis的結(jié)合 565
21.1 Redis和數(shù)據(jù)庫(kù)的結(jié)合 565
21.2 使用Spring緩存機(jī)制整合Redis 568
21.3 RedisTemplate的實(shí)例 582
第6部分 SSM框架+Redis實(shí)踐應(yīng)用
第22章 高并發(fā)業(yè)務(wù) 586
22.1 互聯(lián)系統(tǒng)應(yīng)用架構(gòu)基礎(chǔ)分析 586
22.2 高并發(fā)系統(tǒng)的分析和設(shè)計(jì) 588
22.3 搭建搶紅包開(kāi)發(fā)環(huán)境和超發(fā)現(xiàn)象 595
22.4 悲觀鎖 611
22.5 樂(lè)觀鎖 614
22.6 使用Redis實(shí)現(xiàn)搶紅包 621
22.7 各類方式的優(yōu)缺點(diǎn) 631
附錄A 數(shù)據(jù)庫(kù)表模型 633
附錄B DispatcherServlet流程源碼分析 637
附錄C JSTL常用標(biāo)簽 648
附錄D spring data redis項(xiàng)目分析 660
你還可能感興趣
我要評(píng)論
|