spring-beans的源碼分析之依賴jar包分析

spring-beans module依賴了一些jar包

Paste_Image.png

第一個(gè)jar包

Paste_Image.png

javax開(kāi)頭的都是javaee的包 java分Java SE、Java EE、Java ME
Java SE(Java Platform养交,Standard Edition)任洞。Java SE 以前稱為 J2SE叽躯。它允許開(kāi)發(fā)和部署在桌面、服務(wù)器着撩、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的 Java 應(yīng)用程序。Java SE 包含了支持 Java Web 服務(wù)開(kāi)發(fā)的類匾委,并為 Java Platform拖叙,Enterprise Edition(Java EE)提供基礎(chǔ)。
Java EE(Java Platform赂乐,Enterprise Edition)薯鳍。這個(gè)版本以前稱為 J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可移植挨措、健壯挖滤、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序崩溪。Java EE 是在 Java SE 的基礎(chǔ)上構(gòu)建的,它提供 Web 服務(wù)斩松、組件模型伶唯、管理和通信 API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)(service-oriented architecture惧盹,SOA)和 Web 2.0 應(yīng)用程序乳幸。
Java ME(Java Platform,Micro Edition)钧椰。這個(gè)版本以前稱為 J2ME粹断。Java ME 為在移動(dòng)設(shè)備和嵌入式設(shè)備(比如手機(jī)、PDA嫡霞、電視機(jī)頂盒和打印機(jī))上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境姿染。Java ME 包括靈活的用戶界面、健壯的安全模型秒际、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的連網(wǎng)和離線應(yīng)用程序的豐富支持影兽。基于 Java ME 規(guī)范的應(yīng)用程序只需編寫一次浅悉,就可以用于許多設(shè)備胸嘴,而且可以利用每個(gè)設(shè)備的本機(jī)功能。

這個(gè)jar包主要提供了幾個(gè)注解和一個(gè)接口 比較簡(jiǎn)單
oracle的api地址:http://docs.oracle.com/javaee/7/api/javax/inject/package-summary.html
目前只能看到7版本的 是從版本5開(kāi)始加入的
其實(shí)spring自帶的注解@Autowired等價(jià)于@Inject寄锐、 @Qualifier等價(jià) @Named兵多、Spring自帶的@Qualifier的擴(kuò)展@Qualifier限定描述符注解情況等價(jià)于JSR-330的@Qualifier注解
以前的spring注解@Autowired注解需要寫到set方法上 不過(guò)現(xiàn)在改進(jìn)已不需要
而 @Inject 只需要寫到對(duì)應(yīng)的屬性定義上即可所以會(huì)出現(xiàn) javax.inject.jar
而spring的框架是支持這個(gè)的所以引入了 javax.inject.jar

為什么有了@Inject還需要@Qualifier,大家想啊如果一個(gè)接口有很多實(shí)現(xiàn)類 你注入接口的時(shí)候是不是得指定是哪個(gè)實(shí)現(xiàn)類啊橄仆,還有@Autowired為什么有時(shí)候不需要指定呢剩膘,因?yàn)橹挥幸粋€(gè)實(shí)現(xiàn)類 且spring默認(rèn)按name注入的 所以就沒(méi)問(wèn)題

java.el-api-2.25.jar
雖然在beans module中沒(méi)有使用到(我沒(méi)找到)但是其實(shí)是Java EE對(duì)el表達(dá)式的一種支持。
oracle文檔地址:http://docs.oracle.com/javaee/7/api/javax/el/package-summary.html
文檔第一句Provides the API for the Unified Expression Language 3.0 el表達(dá)式3.0的支持盆顾。el表達(dá)式主要用在jsp頁(yè)面中怠褐,獲取對(duì)象屬性之類的操作,其實(shí)就是一種語(yǔ)法 而這個(gè)jar包就是為該語(yǔ)法提供支持的您宪。
snakeyaml-1.15.jar

YAML是"YAML Ain't a Markup Language"(YAML不是一種置標(biāo)語(yǔ)言)的遞歸縮寫奈懒,早先YAML的意思其實(shí)是:"Yet Another Markup Language"(另外一種置標(biāo)語(yǔ)言),但為了強(qiáng)調(diào)這種語(yǔ)言以數(shù)據(jù)做為中心宪巨,而不是以置標(biāo)語(yǔ)言為重點(diǎn)磷杏,而用返璞詞重新命名,YAML的官方定義很簡(jiǎn)單捏卓,即一種人性化的數(shù)據(jù)格式定義語(yǔ)言极祸,其主要功能用途類似于XML或JSON,YAML使用空白字符和分行來(lái)分隔數(shù)據(jù),且巧妙避開(kāi)各種封閉符號(hào)遥金,如:引號(hào)峦椰、括號(hào)等,以避免這些符號(hào)在復(fù)雜層次結(jié)構(gòu)中變得難以辨認(rèn)汰规。YAML的語(yǔ)法與高階語(yǔ)言類似汤功,可以很簡(jiǎn)單地表述序列(java中的list)、雜湊表(java中的map)溜哮、標(biāo)量(java中的基本類型等)數(shù)據(jù)結(jié)構(gòu)滔金,它重點(diǎn)強(qiáng)調(diào)可閱讀性,其實(shí)JSON語(yǔ)法是YAML的子集,大部分的JSON文件都可以被YAML的剖析起剖析茂嗓。雖然大部分的數(shù)據(jù)分層形式也可以使用類似JSON的格式餐茵,不過(guò)YAML并不建議這樣使用,除非這樣編寫能讓文件可讀性增加述吸,更重要的是忿族,YAML的許多擴(kuò)展在JSON是找不到的,如:進(jìn)階資料形態(tài)蝌矛、關(guān)系錨點(diǎn)道批、字串不需要引號(hào)映射資料形態(tài)會(huì)儲(chǔ)存鍵值的順序等入撒。
java對(duì)此語(yǔ)法文件的解析實(shí)現(xiàn)即為此jar包隆豹,.yaml文件解析。
SnakeYAML 網(wǎng)站 : http://snakeyamlrepo.appspot.com/
支持Unicode茅逮,包括UTF-8/UTF-16的輸入/輸出璃赡;
為序列化和反序列化本地的Java對(duì)象提供了高級(jí)API;
支持YAML類型庫(kù)中的所有類型献雅;
比較理性的錯(cuò)誤信息碉考。

SnakeYA要求Java 5或者更高版本。目前的穩(wěn)定版本是: 1.5挺身。
示例代碼:
Yaml yaml = new Yaml();String document = "\n- Hesperiidae\n- Papilionidae\n- Apatelodidae\n- Epiplemidae";List<String> list = (List<String>) yaml.load(document);System.out.println(list);
輸出結(jié)果:['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']

junit-4.12.jar
junit 比較熟悉是做單元測(cè)試用的侯谁,斷言、測(cè)試異常瞒渠,捕獲異常良蒸,測(cè)試方法的性能的測(cè)試技扼。
mockito-core.jar
mock也是做測(cè)試目的用的伍玖,主要解決比較難以構(gòu)建的對(duì)象,是簡(jiǎn)單輕量級(jí)能夠替代EasyMock的框架剿吻。使用簡(jiǎn)單窍箍,測(cè)試代碼可讀性高。
源碼見(jiàn)github:https://github.com/mockito/mockito/blob/master/README.md
hamcrest-all-1.1.jar
hamcrest是輔助測(cè)試工具 ,junit中的斷言 就是使用的它椰棘,但是二者是不同的框架
地址:http://hamcrest.org/JavaHamcrest/
log4j.jar
這個(gè)是記錄日志用的
tomcat-embed-core.jar
這個(gè)jar包很神奇的可以不將項(xiàng)目copy到tomcat目錄下而實(shí)現(xiàn)基于tomcat環(huán)境的開(kāi)發(fā)

  //設(shè)置工作目錄
    String catalina_home = "C:/";
    Tomcat tomcat = new Tomcat();
    tomcat.setHostname("localhost");
    tomcat.setPort(startPort);
    //設(shè)置工作目錄,其實(shí)沒(méi)什么用,tomcat需要使用這個(gè)目錄進(jìn)行寫一些東西
    tomcat.setBaseDir(catalina_home);
//設(shè)置程序的目錄信息
    tomcat.getHost().setAppBase("e:/");
    // Add AprLifecycleListener
    StandardServer server = (StandardServer) tomcat.getServer();
    AprLifecycleListener listener = new AprLifecycleListener();
    server.addLifecycleListener(listener);
    //注冊(cè)關(guān)閉端口以進(jìn)行關(guān)閉
    tomcat.getServer().setPort(shutdownPort);

//加載上下文
StandardContext standardContext = new StandardContext();
standardContext.setPath("/aa");//contextPath
standardContext.setDocBase("aa");//文件目錄位置
standardContext.addLifecycleListener(new Tomcat.DefaultWebXmlListener()) ;
//保證已經(jīng)配置好了纺棺。
standardContext.addLifecycleListener(new Tomcat.FixContextListener());
standardContext.setSessionCookieName("t-session");
tomcat.getHost().addChild(standardContext);
tomcat.start();
tomcat.getServer().await();
private static void shutdown() throws Exception {
Socket socket = new Socket("localhost", shutdownPort);
OutputStream stream = socket.getOutputStream();
for(int i = 0;i < shutdown.length();i++)
stream.write(shutdown.charAt(i));
stream.flush();
stream.close();
socket.close();
}
objenesis.jar和spring-cglib-repack.jar

spring-cglib-repack是spring cglib的具體實(shí)現(xiàn) objenesis是序列化用的
objenesis 介紹地址:http://objenesis.org/

spring-cglib-repack 在spring4中內(nèi)聯(lián)了objenesis類庫(kù)
基于CGLIB的類代理不再要求類必須有空參構(gòu)造器了:
這是一個(gè)很好的特性,使用構(gòu)造器注入有很多好處邪狞,比如可以只在創(chuàng)建Bean時(shí)注入依賴祷蝌,然后就不變了,如果使用setter注入帆卓,是允許別人改的巨朦。當(dāng)然我們可以使用spring的字段級(jí)別注入。如果大家使用過(guò)如Shiro剑令,我們可能要對(duì)Controller加代理糊啡。如果是類級(jí)別代理,此時(shí)要求Controller必須有空參構(gòu)造器吁津,有時(shí)候挺煩人的棚蓄。spring如何實(shí)現(xiàn)的呢?其內(nèi)聯(lián)了objenesis類庫(kù)碍脏,通過(guò)它來(lái)實(shí)現(xiàn)梭依,可以去其官網(wǎng)看看介紹

jar包終于大概說(shuō)了一遍 好餓去吃飯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末典尾,一起剝皮案震驚了整個(gè)濱河市睛挚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌急黎,老刑警劉巖扎狱,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異勃教,居然都是意外死亡淤击,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門故源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)污抬,“玉大人,你說(shuō)我怎么就攤上這事绳军∮』” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵门驾,是天一觀的道長(zhǎng)射赛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)奶是,這世上最難降的妖魔是什么楣责? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任竣灌,我火速辦了婚禮,結(jié)果婚禮上秆麸,老公的妹妹穿的比我還像新娘初嘹。我一直安慰自己,他們只是感情好沮趣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布屯烦。 她就那樣靜靜地躺著,像睡著了一般房铭。 火紅的嫁衣襯著肌膚如雪漫贞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天育叁,我揣著相機(jī)與錄音迅脐,去河邊找鬼。 笑死豪嗽,一個(gè)胖子當(dāng)著我的面吹牛谴蔑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龟梦,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼隐锭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了计贰?” 一聲冷哼從身側(cè)響起钦睡,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躁倒,沒(méi)想到半個(gè)月后荞怒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秧秉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年褐桌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片象迎。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荧嵌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砾淌,到底是詐尸還是另有隱情啦撮,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布汪厨,位于F島的核電站赃春,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏骄崩。R本人自食惡果不足惜聘鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一薄辅、第九天 我趴在偏房一處隱蔽的房頂上張望要拂。 院中可真熱鬧抠璃,春花似錦、人聲如沸脱惰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拉一。三九已至采盒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔚润,已是汗流浹背磅氨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫡纠,地道東北人烦租。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像除盏,于是被迫代替她去往敵國(guó)和親叉橱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容