Spring概述

1.1.1 Spring是什么

Spring是一個開源的輕量級Java SE(Java 標(biāo)準版本)/Java EE(Java 企業(yè)版本)開發(fā)應(yīng)用框架僚祷,其目的是用于簡化企業(yè)級應(yīng)用程序開發(fā)逻谦。應(yīng)用程序是由一組相互協(xié)作的對象組成浊仆。而在傳統(tǒng)應(yīng)用程序開發(fā)中陕习,一個完整的應(yīng)用是由一組相互協(xié)作的對象組成膊升。所以開發(fā)一個應(yīng)用除了要開發(fā)業(yè)務(wù)邏輯之外法焰,最多的是關(guān)注如何使這些對象協(xié)作來完成所需功能秧荆,而且要低耦合、高內(nèi)聚埃仪。業(yè)務(wù)邏輯開發(fā)是不可避免的乙濒,那如果有個框架出來幫我們來創(chuàng)建對象及管理這些對象之間的依賴關(guān)系÷羊龋可能有人說了颁股,比如“抽象工廠、工廠方法設(shè)計模式”不也可以幫我們創(chuàng)建對象傻丝,“生成器模式”幫我們處理對象間的依賴關(guān)系甘有,不也能完成這些功能嗎?可是這些又需要我們創(chuàng)建另一些工廠類葡缰、生成器類亏掀,我們又要而外管理這些類,增加了我們的負擔(dān)泛释,如果能有種通過配置方式來創(chuàng)建對象滤愕,管理對象之間依賴關(guān)系,我們不需要通過工廠和生成器來創(chuàng)建及管理對象之間的依賴關(guān)系怜校,這樣我們是不是減少了許多工作间影,加速了開發(fā),能節(jié)省出很多時間來干其他事茄茁。Spring框架剛出來時主要就是來完成這個功能魂贬。

Spring框架除了幫我們管理對象及其依賴關(guān)系巩割,還提供像通用日志記錄、性能統(tǒng)計付燥、安全控制宣谈、異常處理等面向切面的能力,還能幫我管理最頭疼的數(shù)據(jù)庫事務(wù)机蔗,本身提供了一套簡單的JDBC訪問實現(xiàn)蒲祈,提供與第三方數(shù)據(jù)訪問框架集成(如Hibernate甘萧、JPA)萝嘁,與各種Java EE技術(shù)整合(如Java Mail、任務(wù)調(diào)度等等)扬卷,提供一套自己的web層框架Spring MVC牙言、而且還能非常簡單的與第三方web框架集成。從這里我們可以認為Spring是一個超級粘合平臺怪得,除了自己提供功能外咱枉,還提供粘合其他技術(shù)和框架的能力,從而使我們可以更自由的選擇到底使用什么技術(shù)進行開發(fā)徒恋。而且不管是JAVA SE(C/S架構(gòu))應(yīng)用程序還是JAVA EE(B/S架構(gòu))應(yīng)用程序都可以使用這個平臺進行開發(fā)蚕断。讓我們來深入看一下Spring到底能幫我們做些什么?

1.1.2 Spring能幫我們做什么

Spring除了不能幫我們寫業(yè)務(wù)邏輯入挣,其余的幾乎什么都能幫助我們簡化開發(fā):

一亿乳、傳統(tǒng)程序開發(fā),創(chuàng)建對象及組裝對象間依賴關(guān)系由我們在程序內(nèi)部進行控制径筏,這樣會加大各個對象間的耦合葛假,如果我們要修改對象間的依賴關(guān)系就必須修改源代碼,重新編譯滋恬、部署聊训;而如果采用Spring,則由Spring根據(jù)配置文件來進行創(chuàng)建及組裝對象間依賴關(guān)系恢氯,只需要改配置文件即可带斑,無需重新編譯。所以勋拟,Spring能幫我們根據(jù)配置文件創(chuàng)建及組裝對象之間的依賴關(guān)系勋磕。

二、當(dāng)我們要進行一些日志記錄指黎、權(quán)限控制朋凉、性能統(tǒng)計等時,在傳統(tǒng)應(yīng)用程序當(dāng)中我們可能在需要的對象或方法中進行醋安,而且比如權(quán)限控制杂彭、性能統(tǒng)計大部分是重復(fù)的墓毒,這樣代碼中就存在大量重復(fù)代碼,即使有人說我把通用部分提取出來亲怠,那必然存在調(diào)用還是存在重復(fù)所计,像性能統(tǒng)計我們可能只是在必要時才進行,在診斷完畢后要刪除這些代碼团秽;還有日志記錄主胧,比如記錄一些方法訪問日志、數(shù)據(jù)訪問日志等等习勤,這些都會滲透到各個要訪問方法中踪栋;還有權(quán)限控制,必須在方法執(zhí)行開始進行審核图毕,想想這些是多么可怕而且是多么無聊的工作夷都。如果采用Spring,這些日志記錄予颤、權(quán)限控制囤官、性能統(tǒng)計從業(yè)務(wù)邏輯中分離出來,通過Spring支持的面向切面編程蛤虐,在需要這些功能的地方動態(tài)添加這些功能党饮,無需滲透到各個需要的方法或?qū)ο笾校挥腥丝赡苷f了驳庭,我們可以使用“代理設(shè)計模式”或“包裝器設(shè)計模式”刑顺,你可以使用這些,但還是需要通過編程方式來創(chuàng)建代理對象嚷掠,還是要耦合這些代理對象捏检,而采用Spring 面向切面編程能提供一種更好的方式來完成上述功能,一般通過配置方式不皆,而且不需要在現(xiàn)有代碼中添加任何額外代碼贯城,現(xiàn)有代碼專注業(yè)務(wù)邏輯。所以霹娄,Spring 面向切面編程能幫助我們無耦合的實現(xiàn)日志記錄能犯,性能統(tǒng)計,安全控制犬耻。

三踩晶、在傳統(tǒng)應(yīng)用程序當(dāng)中,我們?nèi)绾蝸硗瓿蓴?shù)據(jù)庫事務(wù)管理枕磁?需要一系列“獲取連接渡蜻,執(zhí)行SQL,提交或回滾事務(wù),關(guān)閉連接”茸苇,而且還要保證在最后一定要關(guān)閉連接排苍,多么可怕的事情,而且也很無聊学密;如果采用Spring淘衙,我們只需獲取連接,執(zhí)行SQL腻暮,其他的都交給Spring來管理了彤守,簡單吧。所以哭靖,Spring能非常簡單的幫我們管理數(shù)據(jù)庫事務(wù)具垫。

四、Spring還提供了與第三方數(shù)據(jù)訪問框架(如Hibernate款青、JPA)無縫集成做修,而且自己也提供了一套JDBC訪問模板霍狰,來方便數(shù)據(jù)庫訪問抡草。

五、Spring還提供與第三方Web(如Struts蔗坯、JSF)框架無縫集成康震,而且自己也提供了一套Spring MVC框架,來方便web層搭建宾濒。

六腿短、Spring能方便的與Java EE(如Java Mail、任務(wù)調(diào)度)整合绘梦,與更多技術(shù)整合(比如緩存框架)橘忱。

Spring能幫我們做這么多事情,提供這么多功能和與那么多主流技術(shù)整合卸奉,而且是幫我們做了開發(fā)中比較頭疼和困難的事情钝诚,那可能有人會問,難道只有Spring這一個框架榄棵,沒有其他選擇凝颇?當(dāng)然有,比如EJB需要依賴應(yīng)用服務(wù)器疹鳄、開發(fā)效率低拧略、在開發(fā)中小型項目是宰雞拿牛刀,雖然發(fā)展到現(xiàn)在EJB比較好用了瘪弓,但還是比較笨重還需要依賴應(yīng)用服務(wù)器等垫蛆。那為何需要使用Spring,而不是其他框架呢?讓我們接著往下看袱饭。

1.1.3 為何需要Spring

一 首先闡述幾個概念

1弛随、應(yīng)用程序:是能完成我們所需要功能的成品,比如購物網(wǎng)站宁赤、OA系統(tǒng)舀透。

2、框架:是能完成一定功能的半成品决左,比如我們可以使用框架進行購物網(wǎng)站開發(fā)愕够;框架做一部分功能,我們自己做一部分功能佛猛,這樣應(yīng)用程序就創(chuàng)建出來了惑芭。而且框架規(guī)定了你在開發(fā)應(yīng)用程序時的整體架構(gòu),提供了一些基礎(chǔ)功能继找,還規(guī)定了類和對象的如何創(chuàng)建遂跟、如何協(xié)作等,從而簡化我們開發(fā)婴渡,讓我們專注于業(yè)務(wù)邏輯開發(fā)幻锁。

3、非侵入式設(shè)計:從框架角度可以這樣理解边臼,無需繼承框架提供的類哄尔,這種設(shè)計就可以看作是非侵入式設(shè)計,如果繼承了這些框架類柠并,就是侵入設(shè)計岭接,如果以后想更換框架之前寫過的代碼幾乎無法重用,如果非侵入式設(shè)計則之前寫過的代碼仍然可以繼續(xù)使用臼予。

4鸣戴、輕量級及重量級:輕量級是相對于重量級而言的,輕量級一般就是非入侵性的粘拾、所依賴的東西非常少窄锅、資源占用非常少、部署簡單等等半哟,其實就是比較容易使用酬滤,而重量級正好相反。

5寓涨、POJO:POJO(Plain Old Java Objects)簡單的Java對象盯串,它可以包含業(yè)務(wù)邏輯或持久化邏輯,但不擔(dān)當(dāng)任何特殊角色且不繼承或不實現(xiàn)任何其它Java框架的類或接口戒良。

6体捏、容器:在日常生活中容器就是一種盛放東西的器具,從程序設(shè)計角度看就是裝對象的的對象,因為存在放入几缭、拿出等操作河泳,所以容器還要管理對象的生命周期。

7年栓、控制反轉(zhuǎn):即Inversion of Control拆挥,縮寫為IoC,控制反轉(zhuǎn)還有一個名字叫做依賴注入(Dependency Injection)某抓,就是由容器控制程序之間的關(guān)系纸兔,而非傳統(tǒng)實現(xiàn)中,由程序代碼直接操控否副。

8汉矿、Bean:一般指容器管理對象捧书,在Spring中指Spring IoC容器管理對象事扭。

二 為什么需要Spring及Spring的優(yōu)點

●非常輕量級的容器:以集中的、自動化的方式進行應(yīng)用程序?qū)ο髣?chuàng)建和裝配绅项,負責(zé)對象創(chuàng)建和裝配曲尸,管理對象生命周期赋续,能組合成復(fù)雜的應(yīng)用程序。Spring容器是非侵入式的(不需要依賴任何Spring特定類)队腐,而且完全采用POJOs進行開發(fā)蚕捉,使應(yīng)用程序更容易測試、更容易管理柴淘。而且核心JAR包非常小,Spring3.0.5不到1M秘通,而且不需要依賴任何應(yīng)用服務(wù)器为严,可以部署在任何環(huán)境(Java SE或Java EE)。

AOP:AOP是Aspect Oriented Programming的縮寫肺稀,意思是面向切面編程第股,提供從另一個角度來考慮程序結(jié)構(gòu)以完善面向?qū)ο缶幊蹋ㄏ鄬τ贠OP),即可以通過在編譯期間话原、裝載期間或運行期間實現(xiàn)在不修改源代碼的情況下給程序動態(tài)添加功能的一種技術(shù)夕吻。通俗點說就是把可重用的功能提取出來,然后將這些通用功能在合適的時候織入到應(yīng)用程序中繁仁;比如安全涉馅,日記記錄,這些都是通用的功能黄虱,我們可以把它們提取出來稚矿,然后在程序執(zhí)行的合適地方織入這些代碼并執(zhí)行它們,從而完成需要的功能并復(fù)用了這些功能。

簡單的數(shù)據(jù)庫事務(wù)管理:在使用數(shù)據(jù)庫的應(yīng)用程序當(dāng)中晤揣,自己管理數(shù)據(jù)庫事務(wù)是一項很讓人頭疼的事桥爽,而且很容易出現(xiàn)錯誤,Spring支持可插入的事務(wù)管理支持昧识,而且無需JEE環(huán)境支持钠四,通過Spring管理事務(wù)可以把我們從事務(wù)管理中解放出來來專注業(yè)務(wù)邏輯。

JDBC抽象及ORM框架支持:Spring使JDBC更加容易使用跪楞;提供DAO(數(shù)據(jù)訪問對象)支持形导,非常方便集成第三方ORM框架,比如Hibernate等习霹;并且完全支持Spring事務(wù)和使用Spring提供的一致的異常體系朵耕。

靈活的Web層支持:Spring本身提供一套非常強大的MVC框架,而且可以非常容易的與第三方MVC框架集成淋叶,比如Struts等阎曹。

簡化各種技術(shù)集成:提供對Java Mail、任務(wù)調(diào)度煞檩、JMX处嫌、JMS、JNDI斟湃、EJB熏迹、動態(tài)語言、遠程訪問凝赛、Web Service等的集成注暗。

Spring能幫助我們簡化應(yīng)用程序開發(fā),幫助我們創(chuàng)建和組裝對象墓猎,為我們管理事務(wù)捆昏,簡單的MVC框架,可以把Spring看作是一個超級粘合平臺毙沾,能把很多技術(shù)整合在一起骗卜,形成一個整體,使系統(tǒng)結(jié)構(gòu)更優(yōu)良左胞、性能更出眾寇仓,從而加速我們程序開發(fā),有如上優(yōu)點烤宙,我們沒有理由不考慮使用它遍烦。

1.1.4 如何學(xué)好Spring

要學(xué)好Spring,首先要明確Spring是個什么東西门烂,能幫我們做些什么事情乳愉,知道了這些然后做個簡單的例子兄淫,這樣就基本知道怎么使用Spring了。Spring核心是IoC容器蔓姚,所以一定要透徹理解什么是IoC容器捕虽,以及如何配置及使用容器,其他所有技術(shù)都是基于容器實現(xiàn)的坡脐;理解好IoC后泄私,接下來是面向切面編程,首先還是明確概念备闲,基本配置晌端,最后是實現(xiàn)原理,接下來就是數(shù)據(jù)庫事務(wù)管理恬砂,其實Spring管理事務(wù)是通過面向切面編程實現(xiàn)的咧纠,所以基礎(chǔ)很重要,IoC容器和面向切面編程搞定后泻骤,其余都是基于這倆東西的實現(xiàn)漆羔,學(xué)起來就更加輕松了。要學(xué)好Spring不能急狱掂,一定要把基礎(chǔ)打牢演痒,基礎(chǔ)牢固了,這就是磨刀不誤砍柴工趋惨。

1.2 Spring基礎(chǔ)

1.2.1 Spring架構(gòu)圖

image

圖 1-1 Spring架構(gòu)圖

核心容器:包括Core鸟顺、Beans、Context器虾、EL模塊讯嫂。

Core模塊:封裝了框架依賴的最底層部分,包括資源訪問曾撤、類型轉(zhuǎn)換及一些常用工具類端姚。

Beans模塊:提供了框架的基礎(chǔ)部分,包括反轉(zhuǎn)控制和依賴注入挤悉。其中Bean Factory是容器核心,本質(zhì)是“工廠設(shè)計模式”的實現(xiàn)巫湘,而且無需編程實現(xiàn)“單例設(shè)計模式”装悲,單例完全由容器控制,而且提倡面向接口編程尚氛,而非面向?qū)崿F(xiàn)編程诀诊;所有應(yīng)用程序?qū)ο蠹皩ο箝g關(guān)系由框架管理,從而真正把你從程序邏輯中把維護對象之間的依賴關(guān)系提取出來阅嘶,所有這些依賴關(guān)系都由BeanFactory來維護属瓣。

●Context模塊:以Core和Beans為基礎(chǔ)载迄,集成Beans模塊功能并添加資源綁定、數(shù)據(jù)驗證抡蛙、國際化护昧、Java EE支持、容器生命周期粗截、事件傳播等惋耙;核心接口是ApplicationContext。

●EL模塊:提供強大的表達式語言支持熊昌,支持訪問和修改屬性值绽榛,方法調(diào)用,支持訪問及修改數(shù)組婿屹、容器和索引器灭美,命名變量,支持算數(shù)和邏輯運算昂利,支持從Spring 容器獲取Bean届腐,它也支持列表投影、選擇和一般的列表聚合等页眯。

AOP梯捕、Aspects模塊:

AOP模塊:Spring AOP模塊提供了符合 AOP Alliance規(guī)范的面向方面的編程(aspect-oriented programming)實現(xiàn),提供比如日志記錄窝撵、權(quán)限控制傀顾、性能統(tǒng)計等通用功能和業(yè)務(wù)邏輯分離的技術(shù),并且能動態(tài)的把這些功能添加到需要的代碼中碌奉;這樣各專其職短曾,降低業(yè)務(wù)邏輯和通用功能的耦合。

Aspects模塊:提供了對AspectJ的集成赐劣,AspectJ提供了比Spring ASP更強大的功能嫉拐。

數(shù)據(jù)訪問/集成模塊:該模塊包括了JDBC、ORM魁兼、OXM婉徘、JMS和事務(wù)管理。

●事務(wù)模塊:該模塊用于Spring管理事務(wù)咐汞,只要是Spring管理對象都能得到Spring管理事務(wù)的好處盖呼,無需在代碼中進行事務(wù)控制了,而且支持編程和聲明性的事物管理化撕。

●JDBC模塊:提供了一個JBDC的樣例模板几晤,使用這些模板能消除傳統(tǒng)冗長的JDBC編碼還有必須的事務(wù)控制,而且能享受到Spring管理事務(wù)的好處植阴。

●ORM模塊:提供與流行的“對象-關(guān)系”映射框架的無縫集成蟹瘾,包括Hibernate圾浅、JPA、Ibatiss等憾朴。而且可以使用Spring事務(wù)管理狸捕,無需額外控制事務(wù)。

●OXM模塊:提供了一個對Object/XML映射實現(xiàn)伊脓,將java對象映射成XML數(shù)據(jù)府寒,或者將XML數(shù)據(jù)映射成java對象,Object/XML映射實現(xiàn)包括JAXB报腔、Castor株搔、XMLBeans和XStream。

●JMS模塊:用于JMS(Java Messaging Service)纯蛾,提供一套 “消息生產(chǎn)者纤房、消息消費者”模板用于更加簡單的使用JMS,JMS用于用于在兩個應(yīng)用程序之間翻诉,或分布式系統(tǒng)中發(fā)送消息炮姨,進行異步通信。

●Web/Remoting模塊:Web/Remoting模塊包含了Web碰煌、Web-Servlet舒岸、Web-Struts、Web-Porlet模塊芦圾。

●Web模塊:提供了基礎(chǔ)的web功能蛾派。例如多文件上傳、集成IoC容器个少、遠程過程訪問(RMI洪乍、Hessian、Burlap)以及Web Service支持夜焦,并提供一個RestTemplate類來提供方便的Restful services訪問壳澳。

●Web-Servlet模塊:提供了一個Spring MVC Web框架實現(xiàn)。Spring MVC框架提供了基于注解的請求資源注入茫经、更簡單的數(shù)據(jù)綁定巷波、數(shù)據(jù)驗證等及一套非常易用的JSP標(biāo)簽,完全無縫與Spring其他技術(shù)協(xié)作卸伞。

●Web-Struts模塊:提供了與Struts無縫集成褥紫,Struts1.x 和Struts2.x都支持

Test模塊: Spring支持Junit和TestNG測試框架,而且還額外提供了一些基于Spring的測試功能瞪慧,比如在測試Web框架時,模擬Http請求的功能部念。

1.2.2 典型應(yīng)用場景

Spring可以應(yīng)用到許多場景弃酌,從最簡單的標(biāo)準Java SE程序到企業(yè)級應(yīng)用程序都能使用Spring來構(gòu)建氨菇。以下介紹幾個比較流行的應(yīng)用場景:

典型Web應(yīng)用程序應(yīng)用場景:

image

圖1-2 web應(yīng)用程序應(yīng)用場景

在Web應(yīng)用程序應(yīng)用場景中,典型的三層架構(gòu):數(shù)據(jù)模型層實現(xiàn)域?qū)ο蠹讼妫粩?shù)據(jù)訪問層實現(xiàn)數(shù)據(jù)訪問查蓉;邏輯層實現(xiàn)業(yè)務(wù)邏輯;web層提供頁面展示榜贴;所有這些層組件都由Spring進行管理豌研,享受到Spring事務(wù)管理、AOP等好處唬党,而且請求唯一入口就是DispachterServlet鹃共,它通過把請求映射為相應(yīng)web層組件來實現(xiàn)相應(yīng)請求功能。

遠程訪問應(yīng)用場景:

Spring能非常方便的提供暴露RMI服務(wù)驶拱,遠程訪問服務(wù)如Hessian霜浴、Burlap等,實現(xiàn)非常簡單只需通過在Spring中配置相應(yīng)的地址及需要暴露的服務(wù)即可輕松實現(xiàn)蓝纲,后邊會有介紹阴孟;

EJB應(yīng)用場景:

Spring也可以與EJB輕松集成,后邊會詳細介紹税迷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末永丝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箭养,更是在濱河造成了極大的恐慌慕嚷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件露懒,死亡現(xiàn)場離奇詭異闯冷,居然都是意外死亡,警方通過查閱死者的電腦和手機懈词,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門蛇耀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坎弯,你說我怎么就攤上這事纺涤。” “怎么了抠忘?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵撩炊,是天一觀的道長。 經(jīng)常有香客問我崎脉,道長拧咳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任囚灼,我火速辦了婚禮骆膝,結(jié)果婚禮上祭衩,老公的妹妹穿的比我還像新娘。我一直安慰自己阅签,他們只是感情好掐暮,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著政钟,像睡著了一般路克。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上养交,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天精算,我揣著相機與錄音,去河邊找鬼层坠。 笑死殖妇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的破花。 我是一名探鬼主播谦趣,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼座每!你這毒婦竟也來了前鹅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤峭梳,失蹤者是張志新(化名)和其女友劉穎舰绘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葱椭,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡捂寿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孵运。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秦陋。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖治笨,靈堂內(nèi)的尸體忽然破棺而出驳概,到底是詐尸還是另有隱情,我是刑警寧澤旷赖,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布顺又,位于F島的核電站,受9級特大地震影響等孵,放射性物質(zhì)發(fā)生泄漏稚照。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锐锣。 院中可真熱鬧腌闯,春花似錦、人聲如沸雕憔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斤彼。三九已至,卻和暖如春蘸泻,著一層夾襖步出監(jiān)牢的瞬間琉苇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工悦施, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留并扇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓抡诞,卻偏偏與公主長得像穷蛹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昼汗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353