spring 的约定优于配置概念好吗?

2022-07-01 21:29:03 +08:00
 kongkongye

尤其是 spring security+spring boot ,虽然几行代码就跑起来了,但想改却很难,因为不知道约定了啥,背后偷偷给我跑起来个啥,只能官方文档加源码配合着研究,没觉得学习成本有降低。

最终搞了个七七八八,但对于整体的结构与数据流还是没有完全理解,因为 spring boot 的自动配置会检测条件什么的,造成配置的动态化难以捉摸,虽然类都静态写在那里,但会不会实例化还要跑起来才知道。

而且 spring 里普遍的各个重要类之间的关系比较复杂,个人感觉不是线性也不是树形,而是网状的,比较纠缠。

4099 次点击
所在节点    程序员
37 条回复
Leviathann
2022-07-01 21:36:02 +08:00
这个应该是源自 ror 的理念
FrankHB
2022-07-01 22:04:03 +08:00
没约定还不是一样要看文档来配置……
约定烂是另一回事,属于设计问题。
wangkun025
2022-07-01 22:05:37 +08:00
我用的是 Ruby on Rails ,觉得这个理念挺好的。
cheng6563
2022-07-01 22:09:44 +08:00
不约定,配一堆 web.xml ,application.xml ,jdbc.properties ,redis.json ,好玩不
litchinn
2022-07-01 22:11:27 +08:00
理念优劣不清楚,但是人们更愿意使用 springboot 而不是回到配置 spring 的时候这是肯定的
fzdwx
2022-07-01 22:16:41 +08:00
`而且 spring 里普遍的各个重要类之间的关系比较复杂,个人感觉不是线性也不是树形,而是网状的,比较纠缠。`

这个是不是因为找不到到底注入了哪个实现吧,哈哈。
luob
2022-07-01 22:27:23 +08:00
你的感觉没有错,这确实是 spring 这一套最大的硬伤,但是同时带来的好处也是巨大的。

你也不好去指责它什么,因为它怎么选都是错的,所有框架都只能解决一些问题,并不能解决所有问题。
renmu123
2022-07-01 22:30:45 +08:00
首次接触的人会很难受,习惯的人会很爽。
我是不太喜欢这种设计
wolfie
2022-07-01 22:36:04 +08:00
看文档,或者点进去看所有可配置选项。
Jooooooooo
2022-07-01 22:49:21 +08:00
spring 另外一个大问题时, 一旦报错, 找具体是哪里的问题很困难.
frisktale
2022-07-01 23:29:45 +08:00
约定大于配置的思想肯定是好的,但 spring-boot 确实有点过头了。我最开始学 springboot 一脸懵逼,引入组件只能网上搜索,然后跟着教程写,但不知道为什么这么写。后面学了 asp.net core ,也是类似的思想,但清晰多了。
Bingchunmoli
2022-07-02 00:02:09 +08:00
或者换种想法,如果不是约定大于配置,那么我们从什么地方了解到一个框架的使用以及入门,其实还是靠的是文档,大佬看源代码给萌新做视频,博客等等,不同的写法也可能导致萌新更疑惑,约定大于配置不一定是最好的,但是是当前情况下比较良好的解法
dcsuibian
2022-07-02 00:09:41 +08:00
从 xml 时代到现在,肯定是更好的。

如果放开配置的话,可以,但能配置的东西实在是太多了。举几个例子:
数据库连接池:初始数量、最大连接数量、最大最小空闲连接、最长超时时间。
日志框架:输出格式、输出级别。
Servlet:请求大小、session 过期时间

再往细处想,一个 http 请求你就能配好多东西。以上还只是配置,那库的选型呢? Druid 还是 C3P0 ,log4j2 还是 logback ,Jackson 还是 Gson 。选择面太广了。
version0
2022-07-02 00:15:14 +08:00
就是没这个约定大于配置,还是得去看文档,熟悉过后,springboot 这种写法很方便
daliusu
2022-07-02 00:23:38 +08:00
来写写 webpack 看看,你就知道约定优于配置究竟多好了,还没干活先配个一两天 webpack 吧,直到现在配置 webpack 都是常见八股文面试题呢
wiix
2022-07-02 02:00:12 +08:00
spring boot 只是降低了代码量和入手,没有降低学习难度。
另外“看官方文档=学习成本高”不成立,看官方文档也学不会的前端框架贬低都是,看的想骂人😀😀😀
wiix
2022-07-02 02:02:14 +08:00
spring boot 只是降低了配置量和入手难度,并没有降低学习难度。
另外“看官方文档=学习成本高”不成立。看官方文档也学不会的前端框架遍地都是,看的只想骂人😀😀😀
kongkongye
2022-07-02 05:52:56 +08:00
@daliusu 让我想起了 vite 跟 webpack ,webpack 配置的确多,vite 却很简洁
frankly123
2022-07-02 07:52:33 +08:00
这就是你几年经验的用处啊🐶
RuLaiFo
2022-07-02 09:34:26 +08:00
@wangkun025 了解过 ror ,我有种这样的感觉,ror 的约定大于配置很严格,这样在开法时就能清晰的知道哪些是约定好的东西。但是 spring boot 的约定大于配置就比较灵活了,灵活就会导致边界不清晰,所以有些时候不清楚约定了啥,需要看源码。

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

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

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

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

© 2021 V2EX