Spring 开发,流程冗余

2023-07-29 13:06:04 +08:00
 kachu673

使用 SpringBoot 开发项目,少不了要写 Controller 、Service 、Mapper ,虽然 MP 可以一定程度上简化后两者的开发,但必要时候仍要将三个过程全部走完。所以我想请教各位网友:

  1. 其他框架有没有简化这个步骤的?(我不在意代码的耦合,以及各种代码入侵)
  2. 能推荐一些快速开发的框架吗?
  3. 如果可以,我喜欢用 php 来开发(我觉得个人开发者掌握 php 是非常有必要的)
  4. 当然,使用 js 、python 、go 、cpp 的框架我也都可以接受。
7917 次点击
所在节点    Java
95 条回复
EarthChild
2023-07-29 22:43:48 +08:00
你用 magic-api 连 controller 都可以不要,面向 sql 编程……
olaloong
2023-07-29 22:44:07 +08:00
@zed1018 jpa 太难用了,自动建的表字段顺序不按属性顺序按字母顺序,还不能改,贼膈应。复杂点的多对多关系都容易搞得一团乱,更别提查询带排序方法名又臭又长。稍微数据复杂点的项目都是一地鸡毛。比 go 的 gorm 差远了。
反观 mybatis-plus ,建好表后从实体到 service 一键生成,各种操作 lambda query update 一把梭,crud 爽到飞起 -- 真非得写 xml 才能实现的操作,用 jpa 也做不了。
shyangs
2023-07-29 22:59:29 +08:00
雖然 Java 做得到 ( Controller + JDBCTemplate 一把梭 ).

但你如果想要的是隨手寫、不考慮維護的話,應該選動態、弱型別的語言,PHP 或 JS.
NeroKamin
2023-07-29 22:59:30 +08:00
为什么一定要写 Service 和 mapper ?你就 controller 一把梭不就行了?这不就消灭了
EminemW
2023-07-29 23:08:16 +08:00
这跟是不是 Spring 没关系。如果你接手过所有逻辑都写在 Crontroller 的项目,就能理解必要的逻辑分层是有好处的
suyabgaran
2023-07-29 23:26:24 +08:00
@magicfield 😏JOOQ 不错噢
awolf
2023-07-29 23:31:09 +08:00
用什么 java ,启动还麻烦,直接 php
chihiro2014
2023-07-29 23:50:41 +08:00
@olaloong jpa 也可以原生写 sql ,然后使用 projection 。其实很方便
clf
2023-07-29 23:52:49 +08:00
直接 serverless 得了。

这玩意存在是有意义的,统一的对外接口和不同的实现在很多项目里是很有必要的。
olaloong
2023-07-29 23:56:10 +08:00
@chihiro2014 可以是可以,但总归是难受,还不如想 mybatis 写在 xml 里。至少 xml 里的 sql 格式是在的,注解里的 sql 换行都得字符串拼接,偶尔需要复制出来调试时很不方便。
yuanxiaosong
2023-07-30 00:28:55 +08:00
看看我司的分层模型:
filter -> controller -> application -> service -> manager -> dao

filter:统一身份认证,公共参数处理,日志等;
controller:对前端参数验证转换,mq 接收,新旧接口兼容,新旧参数兼容,响应结果按业务裁剪,有些接口 5 年没变过,业务都改了几轮了,调用那些老接口依旧不会报错;
application:采用 ddd 模型后跨领域调用,mq 发送;
service:领域内部业务,一般不互相调用,这里写纯粹的业务,最多就是调用 manager 获取数据或者操作数据,经常都是几百行的;
manager:缓存,领域对象转多个关联表,调用远程服务,切换数据源,比如开始走数据库搜索,后期走 es 搜索,我记得我们最复杂的操作一次要修改接近 50 张表,不在这里的话,service 早疯了;
dao:mysql ,es ,远程调用都在这一层;
企业级开发就这么多层,上了微服务后会按照服务拆分,不要搞形式主义,看看每一层你有没有需求,没有需求可以直接砍掉,还有就是这个和 Spring 没啥关系,纯粹是设计的问题,个人开发就可以一层梭哈就行了。
chihiro2014
2023-07-30 01:14:15 +08:00
@olaloong 换个思路啊。mp 固然有优势,但是 xml 格式让人头秃不是。你为什么不考虑尝试使用 freemaker 和 java 去写套 sql 解析模板。毕竟 orm 框架执行到最后都是 sql 。
james122333
2023-07-30 01:30:29 +08:00
自己写不然就换
iintothewind
2023-07-30 02:01:52 +08:00
上 netty, 自己写框架, 要灵活度有灵活度, 要性能有性能, 要编程效率有编程效率,
前提是你自己玩, 或者你有能力强迫整个团队都陪你这么玩,
chendy
2023-07-30 09:14:47 +08:00
@kachu673 可以消灭,自己的东西 controller 一把梭都没问题,顶多东西复杂了之后改不动骂自己**
evalcony
2023-07-30 09:24:12 +08:00
个人项目无所谓。
而规范之所以是规范,是为了多人协作、复杂项目而生的。
vincent7245
2023-07-30 09:44:25 +08:00
不在意耦合,你就没必要用 java 了,java 复杂的设计模式就是给大型系统解耦用的
rOrange
2023-07-30 10:11:08 +08:00
楼上说的 controller 一把梭真的假的😰
zed1018
2023-07-30 10:20:10 +08:00
@olaloong

> jpa 太难用了,自动建的表字段顺序不按属性顺序按字母顺序,还不能改,贼膈应。复杂点的多对多关系都容易搞得一团乱,

建表字段顺序我并不 care 这里我就不讨论了,外键关系我们也从来不在数据库层面做。

> 更别提查询带排序方法名又臭又长。稍微数据复杂点的项目都是一地鸡毛。比 go 的 gorm 差远了。

JPA 里面自带一个 Example ,直接把对象丢进去,排序放 pageable 里进去,函数名就 findAll 就完了,不知道哪里又臭又长。我也不知道你要自己取名是有多难,是 @query 不能写吗

> 真非得写 xml 才能实现的操作,用 jpa 也做不了。

不懂 jpa 哪里做不了,是没有 querydsl 还是没有 JpaSpecification 。

你说 mybatis 千好万好,只要他还是要用到 xml 我就恶心
cs419
2023-07-30 11:33:02 +08:00
只要你愿意 实体类也可以省
都换成 list<map>
甚至 sql 也让前端传 😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/960762

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX