2015年的那个报错,我记到现在
说实话,刚入行那会我真的恨透了Java生态的配置。 那时候做个最简单的订餐系统,要先搭Tomcat的目录结构,写大段大段的web.xml,给Spring的每个Bean配XML扫描路径,连个数据库连接池都要自己导三个版本不冲突的jar包,稍微打错一个字符,跑起来就是满屏的红色堆栈。我记得当年给街道老食堂做订餐系统,连着熬了三个晚上,代码写了不到两百行,光配置文件堆了十几个。最后跑不起来的报错是ClassNotFoundException,查了整整四个小时,才发现组件扫描的路径里多打了一个空格。 那天我蹲在公司走廊的消防栓旁边,差点把键盘砸了。 带我的老组长路过,扔给我一个压缩包,说你试试这个新出的东西。不用写xml,不用搭Tomcat,打个jar包直接跑。 我当时根本不信。打开demo的时候还在吐槽,能有这么方便的东西?结果真的,导入依赖,写个带注解的启动类,五分钟,订餐系统的接口直接能通。连数据库连接池、日志框架,全给你自动配好了,要改参数直接在properties文件里写两行就行。
现在它在给小区的独居老人当”数字保姆”
一晃二十年过去,我从刚入行的毛头小子,变成了社区里管机房的技术维护员。 现在小区里跑的这套养老服务系统,底层还是基于Spring Boot改的边缘计算适配版本。没有什么高大上的云架构,所有的计算节点就在这个地下机房里,接的是张阿婆家门口的人体活动传感器,李大爷家厨房的燃气报警器,还有社区食堂的取餐叫号屏。 之前有人问我,为什么不把数据传到大云中心去,更稳定啊。 我给他算过一笔账:从小区的传感器传到三十公里外的云中心,一来一回的网络延迟至少有200毫秒。要是碰到下大雨断网,整个系统直接瘫了。现在用本地的Spring Boot节点处理,从传感器触发事件,到给物业、社区医生、老人的子女发提醒,整个流程花不了1.2秒。 上周三李大爷家的燃气报警器因为煮糊了粥触发警报,系统在1.1秒的时候就给值班的物业小哥发了门卡权限,等小哥跑到三楼开门的时候,粥刚在锅里冒起第一缕烟。换做以前的老系统,等云中心把数据转一圈,说不定整个厨房都烧起来了。
没人记得它最初只是个”偷懒工具”
上周带的实习生是个刚毕业的小孩,第一次见我在改Spring Boot的配置,皱着眉头说,这东西不就是个脚手架吗?有什么好折腾的。 我当时没跟他争。转头给他看了我存在硬盘里的老截图——2015年那个满屏红色堆栈的报错,三屏的日志,红得像当年高数挂科的成绩单。 现在的小孩太幸福了。他们从入行开始,接触到的就是零配置、自动装配、一键部署的开发流程,根本不知道以前为了写对一行配置,要熬多少个大夜,要在Stack Overflow上翻多少个老外的提问。就像现在的人用智能手机,根本不会想当年没有触屏的时候,要按多少个按键才能发一条短信。 可乐喝到一半就温了。 我看着屏幕上慢慢滚动的升级日志,突然明白过来,所有你现在觉得理所当然的技术便利,往前倒个十年八年,全是一帮被糟心事磨得受不了的工程师,一点点把挡在路中间的石头搬开,给后来的人铺出来的直路。Spring Boot从一开始就没打算当什么改变世界的神级技术,它就是个想让大家少写两行重复代码,少熬两个没必要的夜,能准点下班吃口热饭的工具。 风从机房的通风口钻进来,带着点外面樟树的味道。我把升级完的日志存进归档文件夹的时候,外面传来社区食堂开饭的铜铃声。张阿婆的取餐码已经同步到了她的老年机上,李大爷家的燃气传感器每30秒会自动给系统报一次状态。 没人会特意去想,这些细碎的、托着普通人日常的系统,底层跑着的是二十年前一帮工程师为了少写两行配置,攒出来的小工具。 我把空可乐罐捏扁,丢进旁边的回收箱。 挺好的。作者|大讲堂
排版|大讲堂
审核|小北
大讲堂