在一边学习springboot源码的时候,也会一边更新一点知识小罐头,所谓小罐头,就是一些零碎的,平常没有被太多注意的小知识,有的时候可以触类旁通,还能增加自己的知识底蕴。
而且不能一昧的沉迷于源码,有的时候也会造成眼光的局限,就只会一两个框架,其实不利于自己的发展,谁知道几年后这一两个框架会不会没落。
下面只用大白话说,不扯spring源码,有关的代码只有两三个自己写的简单的类(其实自己写的简单的类,包括属性、构造器、set、get方法,这种类有很多称呼!在javaweb中被叫做javabean,在ssm框架中别叫做pojo,dto,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容器的创建过程是非常复杂的,我这里只是给萌新说了一点最粗略的,有助于理解其中的逻辑。
因为,用,谁都会用,不就是配置一个监听器,然后自动的就可以用了嘛,主要是其中的原理性的东西才是最经典的。