《Spring实战》系列 01

今天分享一个概念:自证预言。 (self-fulfilling prophecy)

百度百科的解释是:

这是一种在心理学上常见的症状,意指人会不自觉的按已知的预言来行事,最终令预言发生。

自证预言的力量真的是太强大了,大多时候我们认为我们的思想会影响自己的语言,因为普遍上往往自己脑子里想的什么,我们的语言就会是什么,经常听到的一句话是“你要是不这么想,你怎么会这么说?”。确实是这样,我们的语言大多时候是思想的映射。而另外一个容易被大家忽略的事实是:我们使用的语言也会影响自己的思想。

这个时候,自证预言就开始发挥作用了。我们先在脑海里假设一个场景,然后用语言去描绘这个场景,这个过程会加深当初的那个假设,甚至我们可能有点怀疑那个假设的时候,因为使用的语言已经不断在帮助自己去相信那个假设,所以那个假设就会变成像真的一样。到最后,我们落进自己给自己划的圈套里。

第一次认识到这个概念是在李笑来的一本书里,那一刻终于明白会什么有些人会非常自信,有些人会自卑,外在环境确实是一方面因素,然而被频繁使用的语言也是非常重要的因素,它无时无刻在影响着我们的思想和行动。

那本书里还举了一个例子,就是有科学家做实验,给一个班级的学生划分不同的等级,一批同学被分为是优等生,全是积极的评价,一批学生被评为差生,全是消极的评价。并且把这些结果公布给这些学生,一个学期过后,发现那些被评为优等生的学生普遍比那些评为差生的学生学习成绩要好,表现也更优异。

而事实是,在这个实验的开始,科学家们完全是随机挑选的优等生和差生,根本不了解他们的真实情况。之所以会出现这么大的差异,自证预言在其中起了非常大的作用。那些被评为优等生的学生更加自信,更加相信自己的能力,而那些被评为差生的学生,更容易相信遇到困难时就是自己能力不行。久而久之,差距也会越来越大。但事实果真如此吗?

答案是:并非如此。

回到我们每个个人,有多少次,我们充当了科学家的角色对自己做出一个假设,然后就相信了那个假设。这并不是什么要相信自己的鸡汤,而是从科学的角度去阐释人的思想有时候是多么的不靠谱。曾经看过一个专题采访,对从哈佛大学毕业的一百名学生提问一个问题,“哈佛大学对你最大的影响是什么?”大多数人的回答都很接近:在哈佛大学的学习,让自己对人生变得更加自信。

这种自信的力量是多么的宝贵。它绝对是人生中一笔非常重要的财富。

回到自身,当我告诉自己,数据结构和算法真的很难,源码真的很难理解,这对自己提升和进步有任何帮助吗?并没有。这个学习过程是必须经历的,那自己为什么要提前告诉自己不行呢?为什么不能告诉自己多点耐心,多花点时间,就可以慢慢学会呢?

语言会影响思想,思想会影响行动。所以,pay attention to your words.

ok,开始进入今天的正题《Spring实战》第一部分“Spring的核心” 的第一章“Spring之旅”。

这一章主要对Spring进行了基本的简介,总共分为四部分:1.1 简化Java开发 1.2 容纳你的Bean 1.3俯瞰Spring风景线 1.4Spring的新功能。

由于今天是圣诞节,晚上和同事一起庆祝,同时作为晚上喝的最多的成员之一,7瓶啤酒。现在带着半晕乎的脑子,坚持在这里更新读书笔记,今天就只分享前两小节,是早晨清醒状态下读过的内容。现在谈谈读完之后的收获。

1.1 简化Java开发。

What: 要说Spring框架到底干了点啥?就是这五个字,简化Java开发。

Why: 为啥要简化Java开发?原先的EJB(Enterprise JavaBean) 太重量级了,开发起来非常麻烦,Spring的出现代表着轻量,代表着简单,代表着春天和希望。

How: 那Spring是如何简化Java开发的?

简单总结两个点:依赖注入DI 和面向切面编程AOP。其实更详细的是四个策略:
基于POJO的轻量级和最小侵入性编程。
通过依赖注入和面向接口实现松耦合
基于切面和惯例进行声明式编程
通过切面和模板减少样板式代码
啥是最小侵入性编程,第一次看到这个概念,我也觉得不明觉厉的样子。看完书中的解释,其实就是一句话:用了Spring框架的代码从外面看起来好像没用Spring一样,最小侵入性编程就是要达到这个效果。Spring会尽量避免因自身的API而弄乱你的应用代码。具体怎么实现的呢?

两大法宝:依赖注入和面向切面编程。

依赖注入听起来很高大上的样子,其实就是把调用Bean的方式换的更加隐蔽和方便。程序的运行需要各个类之间相互协作,而只要多个类需要协作就会增加耦合度,耦合度太高的代码会带来很多麻烦,比如调试和测试。这里提到了耦合度的概念,也刷新了自己的理解,原先自己认为耦合度越低越好,甚至没有耦合度最好。但是并没想到其实耦合度是代码之间合作必须要有的过程,所以不是没有也可以,而是越低越好,但是不能没有耦合度。

高耦合的代码一定是不受欢迎的,同时也不是好代码。而依赖注入的出现就轻松实现了低耦合的愿望,书中介绍了其中一种方式就是构造器注入的方式(constructor injection),当然需要在xml配置文件里进行配置,然后就可以实现松耦合的效果。创建应用的组件之间协作的行为通常称为装配,而Spring有很多种装配Bean的方式,采用XML是很常见的一种方式。所以,在XML里,使用构造器注入,就可以轻松实现松耦合的目标。其实还有其它依赖注入的方式,在后面的章节会具体展开。

应用切面,即面向切面编程。

这一技术出现的原因是因为:系统由许多不同的组件组成,每一个组件各负责一块特定的功能,除了实现自身核心的功能以外,这些组件还经常承担着其它额外的职责,比如说日志和事务管理。这样一来,额外的系统服务就会使得这些组件代码变得异常复杂,被称为横切关注点。而AOP的出现,就非常好的解决了这个矛盾,让组件只管干好自己的活,让那些其它系统服务切入到这些组件代码中,减轻它们的压力。

具体怎么实现的呢?也是在XML文件中,进行配置。这种解决方案增加了原来组件代码的内聚性,这就是所谓的高内聚低耦合思想。通过少量的XML配置,就可以轻松的实现一个Spring切面,而且可以选择声明式切面,真是拯救核心代码于水深火热之中。Spring的出现真是让原先的EJB简洁高效了不少。

那么Spring还做了其它哪些机智的操作呢?

预知后事如何,我们下期再见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值