夕阳西下,小卤蛋和妲己姐姐竟然手牵手讨论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,大家一起学习进步,成为大佬!

猜你喜欢

转载自blog.csdn.net/xqnode/article/details/106254849