spring-best-practices 总结了下这几年 Spring 开发的一些优雅实现

2019-12-25 21:50:29 +08:00
 rizon

Github 地址: https://github.com/othorizon/spring-best-practices


spring 最佳实践

总结了本人 3 年 Java 开发中的一些开发经验和工具类以及 Spring 框架的应用
采用了 Spring 项目的模式来最简单直观的呈现,直接拿来作为初始化项目也是不错的选择
该项目还在打磨中,仍有很多需要完善和优化的地方

持续更新,欢迎 PR

概要

第三方工具的使用

运维


Github 地址: https://github.com/othorizon/spring-best-practices

先起个头,后面会花时间去整理、沉淀和打磨的。

不知道这东西到底有没有写的价值,所以有些小纠结, 不过对别人来说也许毫无用处,但是对我来说却是非常有意义的了。
如果您觉得这里面有能对你有点用处的东西,麻烦给个 star 支持下哈~~

6182 次点击
所在节点    程序员
41 条回复
rizon
2019-12-25 21:55:21 +08:00
v 站大佬太多,其实怕大家笑话,有些不太敢发帖的,唉~~
chenshun00
2019-12-25 22:55:43 +08:00
提交的概要好像没有啥是我需要的 :(
crclz
2019-12-25 23:28:01 +08:00
star 一哈
a852695
2019-12-26 00:08:52 +08:00
不错 正在学习 java
wysnylc
2019-12-26 00:52:36 +08:00
配置和工具交流可还行....
Sunyanzi
2019-12-26 01:58:15 +08:00
看到这个列表我突然想到一个问题 ... 使用 Interceptor 的正确姿势到底是什么 ..?

我个人一直在用 AOP 实现类似的功能 ... 而且感觉语法更优雅一些 ...

有哪些需求是切面织入无法完成必须要用拦截器的吗 ..?
beginor
2019-12-26 08:29:03 +08:00
居然没有 Spring.Security 相关的?
Takamine
2019-12-26 08:56:59 +08:00
@Sunyanzi 我感觉单从前置来说。……你想要对一个妹纸伸手,拦截器是装了道门 AOP 是穿了件衣服吧。:doge:
magicnobob
2019-12-26 09:07:56 +08:00
很好,向大佬学习,spring 要多学多用
diagram2048
2019-12-26 09:31:21 +08:00
向大佬学习
FanError
2019-12-26 09:37:19 +08:00
@beginor Spring Security 太复杂了,感觉很多人都用拦截器,AOP 自己实现权限等验证操作。
securityCoding
2019-12-26 09:39:25 +08:00
@Sunyanzi aop 做的事情多一些,interceptor 针对的是 http 调用链
rizon
2019-12-26 11:14:18 +08:00
@Sunyanzi #6 嗯,还有 aop,把这个给忘了,回头补上 aop 的使用,
个人觉得拦截器是专门专事,aop 则就是更粗暴的去解决了问题,有失优雅
我只拿 aop 写过打印方法执行时间的日志,和自定义注解的处理。今天找个时间加上哈
rizon
2019-12-26 11:19:57 +08:00
@Sunyanzi #6 java 写代码就是要把事情说清楚,说的有规矩有框子,虽然不够潇洒自由,但对于企业级的项目,可维护性、健壮性才是最重要的,避免技术负债。所以 aop 在可维护性上是低于拦截器的,而且因为 AOP 的手脚太长,容易被错误使用带来无法预期的和难以排查的问题
palmers
2019-12-26 11:20:52 +08:00
还有 spring profile 以及 bean 声明的 xml 头的一些 default 配置 也挺好用的 很多场景可以使用到 可以一定程度上做到依赖分离处理 统一异常处理等等 如果整理需要全面一些,个人觉得是很有意义的 支持你
palmers
2019-12-26 11:21:19 +08:00
哦对了 记得加上 spring 对应版本范围
Allianzcortex
2019-12-26 11:22:50 +08:00
rizon
2019-12-26 11:28:04 +08:00
@palmers #15 感谢支持,Spring 的 IOC 方面的东西 我会好好整理一下哈,
spring boot 用的是 2.1.X,本来想用的 2.2 的,不过考虑到之前项目一直用的 2.1,那时候 Spring cloud 的兼容 2.2 版本的 Hoxton 还没有出,所以还是继续用 2.1 吧
rizon
2019-12-26 11:41:38 +08:00
@FanError #11
@Allianzcortex #17

我在项目中一直用的是拦截器,在我整理的这个项目里也写了一个简单的 auth 实现,特点是解耦。
aop 是针对方法的,拦截器则是针对 http 请求的,我们的权限认证都是针对接口请求的。

我们的权限认证服务是单独开发的,采用 sdk 的方式从公司的私有 maven 仓库分发到各个组件的服务,使用方只要把 sdk 中的拦截器注册进来就可以了。
这样代码侵入最低,当然这种方式也有他的适用范围,各个项目的开发都有自己的不同处境,aop 也有它独有的优势。
m1862897
2019-12-26 12:00:26 +08:00
看了一下,其中的 mapstruct 非常不好用

spring 本身就提供 beansutil 做拷贝,你这个画蛇添足
另外 hutool 是好东西,比 google 的 guava 还好用,值得推荐

其他的都是 spring 的基本用法,不值一提

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

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

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

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

© 2021 V2EX