手把手带你写一个 MiniSpring
郭屹
前 Sun Microsystems Java 研发工程师,开源软件 MiniSpring、MiniTomcat 开发者
6170 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 26 讲
手把手带你写一个 MiniSpring
15
15
1.0x
00:00/00:00
登录|注册

结束语|老兵回首,薪火相传

你好,我是郭屹。
到今天,MiniSpring 课程就更新完毕了,也算是了却了我多年来的一桩心愿。这两个月以来,我们手敲代码、讨论更好的实现方案,一起实现了属于我们自己的 MiniSpring。关于 Spring 我想教给你的知识都在课程中了。而在这最后一节课,我不想讲技术、讲代码了,我想让你听一听我的故事,和我一起回到那个 Java 野蛮生长的年代

我的故事

我之前在课程 JDBC 部分提到过,我 1996 年开始使用 Java 编程序,并编写了中国第一个 JDBC Driver。在那之后的一个技术研讨会上,我见到了 Sun 技术研发中心总监 K.J.Gao,他正在中国开始招兵买马,了解到我做的工作之后,就在 Sun 技术研发中心为我提供了一个职位。
K.J. 被称为 Java 中国第一人,因为他是最早把 Java 技术带到中国的人。那个时候,归国人员不多,像 K.J. 这样的 Stanford 毕业生更是凤毛麟角,于是我有幸在 K.J. 的指导下从事了一段时间的 Java 研发。
记得在 1998 年夏天的时候,K.J. 交给我们一个任务,研究基于 Internet 的企业计算的软件框架结构。当时他想起个名字叫 ICET(发音为 ice tea,中文叫冰茶),他跟我说硅谷的同事们搞了个 HotJava 热咖啡,我们中国团队为什么不可以搞个 Ice Tea 冰茶?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

郭屹在结束语中回顾了自己在Java领域的经历,并分享了他的故事。他提到了自己在Java技术发展初期的工作经历,以及与K.J.合作的经历。他还谈到了对Spring框架的思考和重构,以及他对未来的构想。郭屹强调了对技术原理的深入理解和重要性,并提出了“从头再来”的构想,鼓励读者不断探索和学习。他希望通过自己的教学和分享,能够帮助更多的程序员提升技术水平。文章充满了对技术的热爱和对传承的渴望,展现了作者对技术的深刻理解和对学习的坚持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 MiniSpring》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • peter
    感谢老师的精彩讲解,期待能够再次相遇。 Q1:可以开Tomcat的课程吗? Q2:本专栏侧重spring的核心技术。除了核心模块外,还有很多模块。其他模块是以插件的形式集成到系统中吗? Q3:怎么阅读spring源码?用sourceInsight还是Idea?有的人说直接在Idea中就可以。Spring源码阅读,有什么好的文字或视频资料? Q4:没有请求的情况下怎么访问数据库? SpringBoot项目,controller中自动注入service,service中自动注入Mapper。请求来了之后,由controller处理,controller调用自动注入的service,service再调用自动注入的Mapper,这是典型的ssm流程。 但是,现在有一个需求:软件启动后,需要访问数据库,此时并没有用户请求。 软件启动后,采用上面所说的典型ssm方法,失败了,原因好像是controller中注入的service是null,不知道为什么没有成功注入。(或者是service中自动注入的mappter是null,两年前做的,有点记不清楚了)。 Ssm方法失败后,我现在的实现方法是:controller的构造函数中使用JDBC访问数据库,能够成功访问。 问题:软件启动后,controller的构造函数执行了,说明controller被实例化了,此时service会自动注入吗?

    作者回复: 感谢Peter的耐心,学到了最后。 Tomcat的课程,得跟平台商量,现在还是未知。 别的模块都是插件式的,可以一个一个分别学习,直接在Idea中就好。 Q4你这是第二次问的,首先你没有弄清楚controller-service的分层结构是干什么的,controller这层的目的是为了对外部客户端的访问,系统内部不需要使用。因此,启动的时候,进行初始化,根本不应该涉及到controller这一层。出现的问题,应该是mapper为null,但是至于为什么会是null,得看配置,是不是没有扫描到mapper文件,是不是手工指定了bean的加载order或者是lazy方式。 一般为了初始化,在ApplicationRunner 的run()中写。

    2023-05-03归属地:北京
    4
  • Jay
    多谢老师,这是极客上第一门一直坚持每周完成学习的课程,自己动手实现确实比看介绍原理的文章效率高很多了。有个问题请教老师,spring框架代码已经变化很大了,未来如果要持续学习其原理,应该从哪个方向深入呢?比如是继续学习Ioc mvc...的最新代码,还是去探索spring cloud的原理呢?

    作者回复: 我个人的建议,自己写一个应用框架,实战中遇到问题再回头学Spring框架源代码。之后,再学Spring cloud(不是使用,也是动手写一个简单的),再之后,自己做一个低代码平台。

    2023-05-01归属地:湖北
    1
  • InfoQ_1f089af08bc8
    请问郭老师,什么时候能分享一下MiniTomcat的讲解?谢谢!

    编辑回复: 预计12月上线MiniTomcat课程哦,期待一下吧

    2023-11-15归属地:北京
  • funnyx
    老师好,能否讲一讲关于spring的组合注解的原理呢?

    作者回复: 组合注解的关键是拿到多层注解,方法是递归拿父类。Spring包装了AnnotationUtils这个工具类。

    2023-06-29归属地:浙江
  • __@Wong
    老师早上好,想问个其他话题,当时有没有做得比较好的国产spring啊,能否讲下国产spring与spring之间的故事,国产spring到现在就销声匿迹了呢

    作者回复: 当时有几个团队也搭建了框架,没有能比照Spring的。我当时的做法是Web dispatcher + EJB, web dispatcher接近于Struts。国产团队主要的问题是没有一套全面的架构,都是去解决某一个具体问题,当时的眼界就这样。

    2023-05-31归属地:广东
    2
  • C.
    结束结束,代码运行一切正常,也进行了扩展

    作者回复: 赞

    2023-05-12归属地:江苏
  • 彩笔采购
    很羡慕老师能够不到50岁就归园田居,享受生活
    2023-05-04归属地:河南
    3
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部