Spring 工程师常规解决方案

2023-07-30 19:00:37 +08:00
kachu673  kachu673

下面是我的常用解决方案,主要想抛砖引玉,希望大佬们多多补充,拓宽下大伙的视野:

ORM:Mybaits 、Mybaits-plus 登录:JWT 、Session 安全:拦截器、Spring Security 缓存:Spring Cache 、Spring Data Redis 定时:Spring Task 异常:全局异常处理 结果:统一 Result 处理 工具集:hutool 、POI 网络通信:WebSocket 、HttpCilent 插件:lombook 日志:SLF4J 对象存储:Alioss

还遗漏哪些场景的工具,希望大佬们多多补充。

5771 次点击
所在节点   Java  Java
46 条回复
ily433664
ily433664
2023-07-31 11:12:13 +08:00
Spring Security -> sa-token
Spring Data Redis -> redisson
Spring Task -> xxl-job
hutool -> 其他
kachu673
kachu673
2023-07-31 11:25:45 +08:00
@iosyyy 主要我写的时候是分行写的,但是展示出来后系统把分行都取消了
kachu673
kachu673
2023-07-31 11:26:18 +08:00
感谢各位大佬的分享,如有好的想法可以在评论区多多交流
yazinnnn
yazinnnn
2023-07-31 11:29:16 +08:00
spring -> quarkus
spring cloud -> k8s
java -> kotlin, scala
jit -> aot
shanghai1943
shanghai1943
2023-07-31 12:25:23 +08:00
没有人用 joda time 来处理时间了吗
xiyangzh
xiyangzh
2023-07-31 13:53:33 +08:00
给大家推荐两个小众的精品:
logbook: An extensible Java library for HTTP request and response logging, 可以生成很漂亮的 http 请求和响应的日志,辅以日志过滤,脱敏等功能。

如 json 格式的 http 请求和响应
{
"origin": "remote",
"type": "request",
"correlation": "2d66e4bc-9a0d-11e5-a84c-1f39510f0d6b",
"protocol": "HTTP/1.1",
"sender": "127.0.0.1",
"method": "GET",
"uri": "http://example.org/test",
"host": "example.org",
"path": "/test",
"scheme": "http",
"port": null,
"headers": {
"Accept": ["application/json"],
"Content-Type": ["text/plain"]
},
"body": "Hello world!"
}

{
"origin": "local",
"type": "response",
"correlation": "2d66e4bc-9a0d-11e5-a84c-1f39510f0d6b",
"duration": 25,
"protocol": "HTTP/1.1",
"status": 200,
"headers": {
"Content-Type": ["text/plain"]
},
"body": "Hello world!"
}


围观----> https://github.com/zalando/logbook

problem: is a library that implements application/problem+json 。 能够生成漂亮的 Json 异常信息。对了 jhipster 默认就使用了它。
例如:

Problem.builder()
.withType(URI.create("https://example.org/out-of-stock"))
.withTitle("Out of Stock")
.withStatus(BAD_REQUEST)
.withDetail("Item B00027Y5QG is no longer available")
.with("product", "B00027Y5QG")
.build();

生成为这样的异常消息:
{
"type": "https://example.org/out-of-stock",
"title": "Out of Stock",
"status": 400,
"detail": "Item B00027Y5QG is no longer available",
"product": "B00027Y5QG"
}

围观-----> https://github.com/zalando/problem
xiyangzh
2023-07-31 13:56:39 +08:00
同时再次推荐下 Jhipster ,spring 一站式解决方案
WashFreshFresh
2023-07-31 14:17:26 +08:00
属性复制/映射 MapStruct
anakinsky
2023-07-31 14:45:24 +08:00
http 请求和响应日志
https://github.com/zalando/logbook
cheng6563
2023-07-31 14:50:49 +08:00
别用 Spring Security ,会变得不幸。
这玩意花大把时间配置完过了一个月就完全不知道自己配置了个啥了。
而且版本更新有前端娱乐圈的作风,完全不像 Spring 家族的风格。
nerkeler
2023-07-31 15:19:40 +08:00
工具类:apache commons
监控:springAdmin
stuazt
2023-07-31 15:26:16 +08:00
@Ayanokouji Kotlin 是真的香,用一段时间 Kotlin 回去写 Java ,巨难受
key0323
2023-07-31 16:14:04 +08:00
spring security 貌似是 oauth2.0 的实现,第三方授权我会选择使用,简单登录一般还是手撸
cutecore
2023-07-31 16:45:01 +08:00
HttpCilent > RestTemplate > retrofit
itechnology
2023-07-31 16:49:18 +08:00
Spring Security 强烈不建议使用。太难用了,还不如自己手撸。
LeegoYih
2023-07-31 16:49:19 +08:00
一眼望去就有几个💩框架/库
BBCCBB
2023-07-31 16:49:38 +08:00
http 用 feign/ spring cloud openfeign.
superchijinpeng
2023-07-31 16:52:22 +08:00
spring -> quarkus
godleon
2023-07-31 17:03:56 +08:00
spring security -> 如果不需要支持第三方登录,建议手撸,拦截器还是自己实现的比较灵活,security 太重 链路太长..
alioss -> 不上云建议 minio ,简便维护,而且读写性能还可以;
hutool -> 建议别直接按模块引入,如果全局的话,太大了... 但是我还是喜欢自己封装;项目不做太多依赖;
httpClient -> 如果用的 JDK 版本比较高,可以直接用

一些建议,如果你项目里习惯各种依赖插件,可以建议你尝试升级 JDK 版本,用一些 spring 提供的新特性有时候你会发现,可能比插件封装的性能还要高
KevinBlandy
2023-07-31 17:19:12 +08:00
那我推荐一个优质的 spring/boot/data/security/cloud 的中文文档,无广告,无须登录,无须关注,在线读。

https://springdoc.cn/

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

https://www.v2ex.com/t/961008

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

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

© 2021 V2EX