Spring也是一個惡魔镰官,我認為它帶給我的麻煩甚至比它解決的問題還多提前。
很明顯早期開發(fā)Web項目用Servlet就完事兒了,一個工程里頭又有多少邏輯需要用上Spring來管理依賴呢泳唠,我統(tǒng)統(tǒng)去new對象真的那么的麻煩嗎狈网?我從來不覺得new一個對象很麻煩,反而因為Spring本身的各種語法問題,循環(huán)依賴問題拓哺,各種aop之后搞不清調(diào)用鏈路的問題害淤,害我花費了大量時間。真的拓售,就是寫一點點的增刪改查窥摄,給我那么多事兒漓摩!
那已經(jīng)這樣了移剪,接受現(xiàn)實访惜。Spring到底是什么堕扶?
如果Java是一個人嗜诀,那Spring就是一個道德婊李剖。Java能做的任何事兒尖飞,Spring都跳出來說不對琉挖,你不能這么搞玻侥,你要這么搞决摧。煩的不行。
它最主要的東西就是IOC和AOP凑兰。
IOC就是控制轉(zhuǎn)移掌桩。就是我本來能new的,現(xiàn)在不能new了姑食,就算是Java自帶的語法也不行波岛!我通過聲明的方式來表達類和類的關(guān)系,這個聲明音半,就是通過Spring來聲明则拷。具體的實現(xiàn)有三種,分別是xml形式曹鸠、注解形式煌茬、編程形式。IOC就是這個作用彻桃,其他沒了坛善。如果硬要說還有點啥,那它就是名冊叛薯,在名冊里頭是有編制的浑吟,可以享受它提供的其他各種服務(wù)笙纤。實際上誰care這些服務(wù)呢耗溜。
AOP是面向切面。什么是切面省容,說白了就是執(zhí)行方法前抖拴,執(zhí)行一個通用方法,比如鑒權(quán)。這個更容易阿宅,就是代理模式候衍。當(dāng)別人問細節(jié),我說最好就別問了洒放。真的蛉鹿,AOP的實現(xiàn)細節(jié)是最不重要的,到處都是往湿。
就是IOC和AOP這兩件事兒妖异,就是我們?nèi)粘>幊汤锩妫惻c類合作起來的最大的事兒领追,Spring都說你不行他膳,你腿瘸的,你得用我的外骨骼绒窑。Spring給你包圓了棕孙。
這還不夠。我們想到的其他領(lǐng)域些膨,比如安全蟀俊,有SpringSecurity;比如異步订雾,也有Async之類的處理欧漱;比如批處理,有SpringBatch葬燎;比如國家化误甚,Spring就有i18n的工具;
Spring看Servlet不爽谱净,搞了個SpringMVC窑邦,也沒看出哪里好來。
因為web.xml太復(fù)雜了壕探,Spring也要來管一管它冈钦,就有了SpringBoot,一鍵啟動的web服務(wù)器李请。什么瞧筛,
Boot還有什么習(xí)慣優(yōu)于配置。媽的給我固定格式好了呀导盅,我要什么習(xí)慣優(yōu)于配置啊较幌,特么的業(yè)務(wù)開發(fā)里面最常用的那些個配置,還不是要配置白翻,那些個最不常用的配置給我來個習(xí)慣優(yōu)于配置乍炉,反而搞的更加看不懂绢片,真的解決用戶問題了嗎?但是岛琼,不管怎么說底循,這是一次自救。沒有Boot就沒有Spring了槐瑞,一個項目本來復(fù)雜度是1熙涤,用了Spring復(fù)雜度就是10,有了boot復(fù)雜度回到5困檩。如果沒有boot的話灭袁,Spring早就亡了。
因為微服務(wù)概念出來窗看,Spring立刻搞了一套SpringCloud茸歧,包含Ribbon、Feign显沈、Eureka软瞎、Hytrix、Nacos等等一大推組件拉讯。
還有什么是Spring不想搞的涤浇,真的很好奇。
所以我們想搞任何功能之前魔慷,先去看看Spring有沒有點東西只锭。有的話,最好還是用Spring的院尔。
不知道為什么蜻展,如果Spring是個人,我覺得Spring是一個很激進的邀摆,手伸的很長的人纵顾。他很猛,也很霸道栋盹,他除了拿Java沒辦法施逾,他想架空所有其他組件。
我非常地討厭Spring例获。