【譯者按】這幾天,TSS上的一篇熱文,討論者眾多,特翻譯,水平有限,望多指正。
原文地址:http://gorif.wordpress.com/2007/07/01/5-reasons-why-i-think-i-will-not-use-spring/
我不愿使用Spring有幾個(gè)理由:
1. Spring的配置臃腫
我的項目組在開(kāi)發(fā)一個(gè)企業(yè)級應用時(shí),使用了依賴(lài)注入框架。這個(gè)項目中,有1500多個(gè)類(lèi),并且分散在超過(guò)11個(gè)的模塊里。
以我在實(shí)際開(kāi)發(fā)中的經(jīng)驗,我們創(chuàng )建出的service對象應該少于依賴(lài)他們的其他對象。如果我們使用了Spring框架,當我們創(chuàng )建需要依賴(lài)100個(gè)service對象的1000個(gè)action對象時(shí),這就意味者我們要對這1000個(gè)bean做配置工作。
如果action的數量還在不斷增加,這項工作將變得更加糟糕。我們試圖重構一些東西、而又不愿破壞已有的代碼,就必須加倍小心。
你或許想到了通過(guò)類(lèi)型(byType)來(lái)自動(dòng)綁定,哦?這或許不是一個(gè)壞主意??墒?,為什么不通過(guò)名稱(chēng)(byName)來(lái)自動(dòng)綁定呢?可是如果我們對不同的對象做配置就有不同的名稱(chēng),這聽(tīng)上去很容易讓人糊涂,那樣的話(huà),我猜你又得在辦公室里度過(guò)漫漫長(cháng)夜了。
2. XML文件配置痛苦
XML配置痛苦,這個(gè)痛苦不是說(shuō)編寫(xiě)它有多復雜,更多是指其維護性。
如果你有1000個(gè)action,你需要對在配置中放置什么和如何放置很清楚,你需要有只鷹般銳利的眼睛,你必須不能忘記在改動(dòng)X(jué)ML配置時(shí)使用工具來(lái)查找和替換,否則,這個(gè)應用程序會(huì )在產(chǎn)品化的時(shí)候崩潰。
3. 如果使用XML配置,你將弱化Java強類(lèi)型檢查
當你開(kāi)始使用XML配置的時(shí)候,你將弱化Java的強大。
當你幸運地發(fā)現注入到bean里的這個(gè)對象不是這個(gè)bean所需要的,但你必須等待下去直到Spring容器開(kāi)始啟動(dòng)并且檢查依賴(lài)關(guān)系。在這個(gè)時(shí)候,你該意識到你犯了個(gè)愚蠢的錯誤。哎!
一 些配置不使用XML,而使用Java類(lèi),在Guice里,你可以使用module。如果我們想要靈活性,我們仍然可以通過(guò)分離業(yè)務(wù)邏輯包到另外的包中來(lái)達 到這點(diǎn),并且在核心包中,你只需使用Class.forname(”the module class”)。這就是全部所在!
4. Spring不是輕量級的容器
不幸地是,Spring不再是輕量級容器?,F在,Spring的性能不再是最快的了,已經(jīng)有很多性能更好的輕量級容器出現了。
5. Spring是一個(gè)希望我們構建松耦合程序的容器
Spring是一個(gè)只是希望我們使用松耦合技術(shù)的容器,Spring沒(méi)有真正地更多關(guān)注緊耦合。我非常確定,一旦我們使用除了spring-core.jar的Spring包,這將意味著(zhù)我們的程序不能離開(kāi)Spring存活。