PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 既然网上已经有这么多了,我也来胡诌一个,哈哈哈哈哈哈 每种语言都喜欢找一些和自己语言名字相关的周边单词,来作为语言里的一些概念的名字。 比如说 Java 中出镜率颇高的 bean 这个概念。Bean 是豆子的意思。Java 呢,原本是爪哇岛的意思,盛产咖啡豆。所以 coffee bean 就和 Java 有了联系。Bean 也就跟 Java产生了关系。 用我们现在的话说,这就是梗。get到了,会心一笑,get不到,基本影响交流。 现在这个梗就更有意思了。爪哇岛盛产 coffee bean。Java 语言现在盛产 spring bean。 当然 bean 最开始和 Java 语言联系在一起,是一个叫做 Java Bean 的东西。 Java Bean 是一个约定俗成的规范,并非是一个语法层面的东西。简要来说,一个 Java Bean 是一个 public 的 class,它里面的成员变量都是 private 的,而且为每个成员变量提供get/set等方法。 基于这个标准,Sun 公司搞出了EJB,也就是Enterprise Java Bean。这个概念已经凉凉了,不用再费脑细胞学习它是什么了。 接过 EJB 的市场的,是我们现在耳熟能详的 Spring。早在 EJB 发际不久,Spring 就以更简单更好用的 Bean 来和 EJB 刚。一个是 Sun,Java 的主要控制者,一个是第三方。看来实力悬殊的比赛,最后还是 Spring 赢了,而且完胜。后来 Java 主动拥抱 Spring,将依赖反转等 Spring 首创的相关概念的注解也加入到了 Java 中。 这也从另一个侧面证明了 Java 是一个相对公平和开放的平台。说到这里就多说一句。作为微软对标 Java 生态系统的平台,.net 再号称自己有技术优势(当然我并不这么觉得,大家都是现代语言,谁也不比谁高多少),它也只能跑在 Windows + IIS 上。那就是微软一家独大,除非大家没得选,否则一个封闭的平台,再优秀也无法培育出一个充满活力的生态系统。当然现在微软开始拥抱开源,拥抱 Linux。但是我还是觉得,以后能跟 Java 抢市场的,不会是 .net 平台。即便是大如微软,大如 Google,生态系统也不是想建立就能建立的。 说回到 bean。Spring 既然一开始对标的是 EJB,也很自然的把自己系统里的东西叫做 bean。但是它并不像 Sun 那样搞这么复杂,就简简单单的一个词:bean。现在我们习惯叫它 spring bean。 https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/02%E7%AB%A0-Bean%E8%BF%99%E4%B8%AA%E5%90%8D%E5%AD%97%E6%80%8E%E4%B9%88%E6%9D%A5%E7%9A%84.md
作者回复: 因为不能开空调,会有比较大的风声和噪音囧
作者回复: 好问题。后面会讲访问控制符,使用成员变量的标准动作是: 1)将所有成员变量声明为private的,这样就不允许本类代码之外的代码更改成员变量的值了 2)提供public的方法,更改成员变量的值。外部代码可以通过调用对象的public方法,间接更改这个对象的成员变量值。方法代码里增加对成员变量值的合法性检查。
作者回复: 不容易不容易😁,谢谢大家的支持~
作者回复: 极客时间有好多Spring的课程,都很不错哒。不能只逮住一个人撸,每个人的能力都是有限的,哈哈。
作者回复: 哈哈,表激动,又不是换女装。
作者回复: 很多框架是依赖于方法/反射来做切面或者代码注入的,直接将属性设置为public,会有后患。 方法还有很多别的功能,比如使用synchronized修饰,可以控制同步访问等。 大多数get/set确实是多余,但是正所谓有备无患。养成一个好习惯,凡属性,都走这个套路就行。 约定俗成的好处就是不用思考,直接来。
作者回复: 理解完全到位。 程序说白了就是数据结构+算法。而对于绝大部分业务代码来说,其实就是数据+逻辑。把数据和操作数据的逻辑都封装在一个类里,就是每个类各司其职。拒绝你中有我,我中有你。
作者回复: 必须的,学习期间没有正反馈,如果再没意思,那让人怎么坚持💪
作者回复: 哈哈,使劲夸我别怕我骄傲