知識小罐頭01
在一邊學習springboot原始碼的時候,也會一邊更新一點知識小罐頭,所謂小罐頭,就是一些零碎的,平常沒有被太多注意的小知識,有的時候可以觸類旁通,還能增加自己的知識底蘊。
而且不能一昧的沉迷於原始碼,有的時候也會造成眼光的侷限,就只會一兩個框架,其實不利於自己的發展,誰知道幾年後這一兩個框架會不會沒落。
下面只用大白話說,不扯spring原始碼,有關的程式碼只有兩三個自己寫的簡單的類(其實自己寫的簡單的類,包括屬性、構造器、set、get方法,這種類有很多稱呼!在javaweb中被叫做javabean,在ssm框架中別叫做pojo,dto,mapper,vo,大白話就是實體類)。
明明就是一個東西,為什麼這麼多名字啊,有病啊?我的第一感覺就是這樣。
但是,我當看見過Martin Fowler一段話讓我對這些名字徹底改觀,Martin Fowler鼎鼎大名,他說過一句話,
"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."
翻譯:“我們很想知道為什麼人們如此反對在他們的系統中使用常規物件,我們得出的結論:這是因為簡單物件缺少一個響亮的名字。所以,現在我們賦予了他們一個名字,並且反饋的效果非常好。”
所以我們不要因為一些類看起來很簡單,別人看起來很弱智,就不用,而追求那些非常複雜的類,這樣太本末倒置了,適合自己的才是最好的。
咳咳,不瞎扯了,今天看一下監聽器的基本原理。
來看一段公司---員工的邏輯:
首先:員工4個(user)-------->加入一間公司,公司的老闆是Boss(可以看作是向Boss可以坐在辦公室管理所有user)------------>情況:Boss可以隨時向所有的user加工資,但是不可能一個一個的給你發,所以Boss只要總經理Manager說一下,Boss就可以去度假去了,其他事總經理去做。
總結一下就是:user先要加入公司---------->Boss只要對Manager說話-------->Manager就會所有執行操作----------->user就加工資了
好好體會一下這個邏輯,其實就跟微信公眾號一樣,很多個使用者關注一個微信公眾號,只要微信公眾號一發訊息,所使用者都能收到資訊。
大家還記得23種設計模式吧!
反正我是不記得了,我只記得有個23種,其中單例,消費者模式,咳咳,慚愧慚愧!而今天例子這個在23種設計模式中叫做觀察者模式。
對的,大家在ssm框架的時候,肯定配置過一個ContextLoaderListener,其實監聽器用的就是觀察者模式,也就是和今天的這個事例基本邏輯一樣。
對應關係(spring):ioc容器-------->Boss ; 訊息派發器--------->Manager ; listener------------>user
啟動一個web應用(以spring為例)用大白話說一下監聽器過程:最先開始的就是肯定是ioc容器的建立、重新整理、初始化(其中就包括初始化訊息派發器以及配置監聽器,將訊息派發器丟到容器裡),例項化剩餘的bean之後,ioc容器就會發佈一個訊息(我完成啦,後面的工作就交給你們啦~),此時,就會從容器中獲取訊息派發器(會自動收集容器裡所有的listener),將訊息派發出去。
其實ioc容器的建立過程是非常複雜的,我這裡只是給萌新說了一點最粗略的,有助於理解其中的邏輯。
因為,用,誰都會用,不就是配置一個監聽器,然後自動的就可以用了嘛,主要是其中的原理性的東西才是最經典的。