夕陽西下,小滷蛋和妲己姐姐竟然手牽手討論Spring...

忙了很久,沒時間寫博客,感覺很慚愧,對不起CSDN各位大佬們對卑下的厚愛。

大佬

今天決定發功,寫一篇關於Spring的文章,話不多說,開搞!


話說這天,小魯班一個人蹲着峽谷紅爸爸旁邊的草叢裏,託着自己可愛的腮幫子思考人生。
在這裏插入圖片描述

正巧,妲己小妹妹搖着性感的紅尾巴路過,看到小魯班鬱悶的模樣,決定上去逗逗他。
在這裏插入圖片描述

妲己:小滷蛋,你在想啥呢,那麼出神,是不是昨晚金金做的滷蛋不合胃口,在生氣呢

小滷蛋:啊…妲…妲己小姐姐…沒…沒有…(悄悄別過臉去掩飾自己慌張的表情)

妲己: (轉動迷人的大眼睛,湊近小滷蛋)是嘛?小滷蛋,那你爲啥不敢看我呀…

小滷蛋:(聞到一股濃濃的香水味,打了一個激靈,往後挪了幾步)啊…是這樣的…妲己姐姐,我不是報名峽谷程序員學院的Java課程了嗎… 可是學到Spring這個知識點的時候有點蒙圈了…現在很受傷…

妲己:沒有心,就不會受傷。

小滷蛋:??

妲己:sorry,串臺詞了呃…

小滷蛋:害…

妲己:正好我學完了Spring,那我來給你講講吧?

小滷蛋:(很興奮,臉漲的通紅)好呀,好呀,妲己姐姐…

妲己:emm…我先問你一個問題,你知道Spring中用到哪些設計模式嗎?

小滷蛋:(有點心虛) 知道一點…

妲己:那你說說Spring爲什麼使用單例模式?

小滷蛋:(這個我看過,得意)是爲了實現資源共享?某些資源創建的成本很高,比如數據源等…

妲己:嗯,是的,

Spring的單例模式核心方法通過AbstractBeanFactory實現的。來看看源碼:

public Object getSingotonByBeanName(String beanName){
    Object bean=getSingleton(String beanName, boolean allowEarlyReference)if(bean==null){
        synchronized (this.singletonObjects) {
                //雙重校驗
                Object singletonObject = this.singletonObjects.get(beanName);
                if (singletonObject == null) {
                    singletonObject = singletonFactory.createBean();
                    addSingleton(beanName, singletonObject);
                }
                return singletonObject;
            }
    }
}

Spring一開始會嘗試獲取bean,如果沒有,那就加鎖,Double Check之後創建Bean,創建完之後緩存在singletonObjects裏面,之後再用的時候直接取這個單例對象就可以了。

小滷蛋:噢噢…我好像懂了,我之前看過node哥哥的單例模式(面試單例小技巧),有印象的…

妲己:哈哈,滷蛋,沒想到你這麼好學啊!

小滷蛋:嘿嘿,我這不是看到大家都很努力,我不能拖後腿啊

妲己:不錯,那你知道還有哪些其他的設計模式嗎?

小滷蛋:呃…這個…好像還有…(拍腦袋思考)

妲己:好啦,我來給你普及一下吧

小滷蛋:好耶(抓住妲己的胳膊晃啊晃)

妲己:(摸了摸小滷蛋的腦袋,感覺他真可愛死了,忍不住又親了一口)

小滷蛋:(大羞羞,但還是紅着臉穩穩的坐着)

妲己:小滷蛋,我跟你說哈,Spring除了單例模式還有很多種設計模式呢,作爲Java領域最優秀的框架,它有很多值得我們借鑑的地方哦

比如代理模式,可以做到既不修改基類(無侵入),又可以靈活的擴展它的功能,像我們熟知的AspectJ、CGLIB、JDK動態代理等

比如觀察者模式,可以做到代碼解耦,像Spring中的事件通知機制就是。

比如簡單工廠方法模式,由BeanFactory的實現類來統一生產bean,實現bean創建時干預、統一管理等。

比如模板方法模式,通過模板代碼來減少冗餘代碼,模板類提供模板方法,調用類接口提供自定義的通用方法,調用類作爲參數,在執行完模板方法時,實現自己的業務邏輯。

還有責任鏈模式、策略模式等等…

小滷蛋:哇喔,妲己小姐姐你好厲害呀,會這麼多!

妲己:哈哈,沒有啦,還不是我前段時間偷偷關注了node哥哥,從他那裏學到了很多Java小技巧呢!

小滷蛋:搜嘎,那我也去找node哥哥給我補補課去

妲己:好呀,咱倆一起,好久沒看到node哥哥了呢,嘻嘻…


夕陽下,只剩小書包和妲己手牽手一高一矮的身影,唯美而盪漾…
在這裏插入圖片描述




喜歡Java,熱衷學習的小夥伴可以加我微信: xia_qing2012,大家一起學習進步,成爲大佬!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章