不用spring,可以吗?

摘自:https://www.zhihu.com/question/537894826

Java开发不用Spring生态有前途吗?

比如在某些大厂自己封装好的框架直接用,感觉没啥提升

新增:做后端web开发。这套框架不可能用于行业标准,因为底层技术都很陈旧。感觉自己就是个二开工具人吧

 

都是工具,一个工具学会了只能在一个地方用,和一个工具学会了能在很多地方用,自然后者更好,更能“提升”。

 

我自己真弄了 Java 框架,06 年做的 PHP 版,11 年后改用 Java 重写,然后一直维护到现在。空口无凭,代码敬上:https://github.com/ihongs/HongsCORE

寥寥几颗星没啥说的,我也不在意这个。

这个小玩意可以工作在 Tomcat 等应用容器下,内置了 Jetty 所以也可以独立运行,内置了 Lucene 并进行封装,大部分场景(我司的场景)可以完全替代关系数据库,开发了一个简单的数据结构定义工具,可以通过简单设置构建起 CRUD 接口和简单聚合统计接口,并“生成”前后台页面,且可以进一步通过 JSP 作为脚本控制接口细节。

以上算广告吧,不扯了,说说我的烦恼。

从原 PHP 版到现在的 Java 版,都在当时和现在公司的工作应用过,也针对业务性质进行过改造。总的来说,省了不少事。目前团队只有两个前端承担网站、微站和微信小程序的开发工作,我一人承担 API 和后台及部分临时性活动定制的开发工作。

早先的 PHP 版吧,使用期间没啥问题,领导、组员都没意见,甚至觉得挺方便,其中有个麻烦是离职的同事比较郁闷,因为他讲不清楚他用了个什么框架;我时常无意间讲讲观察到的各个框架的细节异同,他们换东家后都高升了,当然这主要还是他们自己优秀。从那离职多年后,同事都走光了,原公司都被收购了,还会有人来邮件询问技术细节,但很多我自己都忘了,当初留过文档的,但什么都没带走。

到 Java 版,起先我是不打算用的,但因为庙实在太小,组员离职后新人难以为继,于是先斩后奏在一个小的新的项目使用了自己的框架,老板也接受了。再后来我也没想到,这个小项目越来越被老板寄予厚望,规模越来越大,以至于公司内外各种数据统统放到了这套系统上,直到变成了实际上的公司业务系统。于是我就顺应当时潮流,改叫为数据与运营中台系统,一套系统对接上十个网站、小程序。

量上去后,最先遇到的麻烦是并发处理能力。由于起初就是想搞个简单的 CRUD 自己玩,也不想成天建表写 SQL,拿 Lucene 做了数据读写封装,并用他的快速排序特性做了几个简单的统计封装。没有用 ES,集成在系统一起,因此只能单机部署,现在要拆就很痛苦,不拆的话,无论我如何优化效率也有限。按实际情况来说,以我司日常和特别活动的量来说是完全够用的,但老板对单机很害怕,不能热备不能做负载均衡自动切换机器,这是个很头疼的问题。有时候我都想上套 Kafka 做分流做双机互相热备,但零散的事太多,实在没精力搞了。

你可以说这是我的本事不行,这困境是我自己搞出来的(但我用着是真省人省时间)。兄弟单位有用 Spring、ES、Neo4j 等,他们遇到的一些小问题在我这看来完全不算事,底层我够得着很容易控制细节。他们大可直接甩锅给那些框架,从上到下也没异议,毕竟谁也没法短时间内替换这些,即使有能力去改源码,也没法保证改不出别的问题,并给未来维护升级带来额外的麻烦。必须承认,那些通用框架、组件是一群行业里顶级的工程师研发出来的,我这样的无名小卒敲敲打打搞出来的完全没法比。

有时候,会为了通用一点刻意保持底层简单,但领导们会说反正这是你做的嘛,你就改改吧。有时候,出了点问题,即使我在尽可能短的时间定位并修复了问题,也会在未来很长时间被质疑,这带来内心的煎熬,让人彻夜难眠。

如果把时间拨回几年前那个小项目开始技术选型的那天,我是不会选自己的框架的。代码写多写少写快写慢都一样,多几个人写也没啥不好,都要给工资的嘛,何必自寻烦恼呢。

题主在描述里写的“自己封装好的框架直接用,感觉没啥提升”讲得很对,一个工具学会了使用,但只能在一个地方用,离开来这里屁用没有,这就是没有提升。当然,你说的这个大厂的框架要是成为了行业标准,那就有提升、有前途。

 

我觉得这一块我比较有发言权。因为我已经经历了spring的发展阶段。

我是在2013年开始做一些开源项目的,在这之前的10年间,我在项目中根本就不使用Spring生态,那时候我用的是servlet还有就是typestry,估计大部分人都没有听说过这个,你可以google一下。那时候大部分人,都在用ssh(struts, spring, hibernate),不用多说,面试的时候,只要是Java招聘,基本上都要问一些与此相关的问题。所以我不得不去了解一下Spring的框架,但是,在那个时候,我发觉在Spring framework里面早就有一个叫Spring mvc的东西,我就好奇,为什么没有多少人使用?这个不是一个很好的东西吗?当时我觉得这一套的东西可能会是Spring扩大自己在web领域的策略,因为毕竟大部分人在项目中只使用Spring的ioc,依赖注入。对于视图层基本用的是struts。那个时候,如果想做一个漂亮的应用,前端人员要对站点或应用做一些美化的工作,通常都需要后端人员去协助。

当应用越来越复杂,对前端体验要求越来越高的时候,javascript/ajax技术开始火热起来。尤其是google的兴起,推出了对gmail把ajax用得淋漓尽致,并结合了“服务器推”的技术大大节省了服务器的开销。这时候大量的前端框架诞生,比如prototype.js, ext.js, jQuery异军突击。随后就是google 在2010年左右,推出了angular.js,到2014年左右开始流行起来。这个时候,使用struts就会比较麻烦了。前端与后端的协助就比较痛苦。这时候就有人开始使用spring mvc了,但是,配置相当痛苦,一堆的xml需要配置,每改动一次还要重启一次。Spring在2012-2013年左右就开始搞spring boot。没有比较就没有痛苦。相信如果再让你去用这些东西,打死我们也不想用了。因为Spring boot已经把大家的心抓住了。它解决了java程序员很多的痛。

可是,是不是我们做java开发就只能用spring了呢?spring boot是不是很完美了呢?前后端分离真的已经很好了吗?不是。我相信仍然存在很多的问题,只是可能大部的场景/或领域还无法触及得到,比如安全问题、高性能的问题等。这就是为什么一些大的公司只用自己的框架。

所以,我相信技术总是在不断进步的,它一直在跟着我们不断的往前走。不是我们跟着它往前走。

在Spring boot还没有出来的时候,我其实就开始了一个小框架。可惜,因为工作压力大。一直没有时间去开发,最近一年才开始慢慢重启。相信,有一天,它或者也可以成为一个受欢迎的小东西。

总结一句话:每一样技术都是为了解决我们的问题诞生的,我们不能被它牵着走,而是要牵着它往前走。希望对你有用。

 

技术服务于业务

从13年就放弃spring了 之一直在用国产jfinal 各种项目几乎做了个遍 舒服的很

 

看你做的是什么 Java不止Spring

如果你做中间件 做编译器 做通讯 做桌面应用 做游戏 做存储 做数值计算 都不需要用到Spring

 

 

 

 

 

 

 

 

 
posted @ 2023-03-22 11:59  古锁阳关  阅读(163)  评论(0编辑  收藏  举报