nodejs优秀的开发体验
用过nodejs的都知道,nodejs的开发体验有多好,修改一个内容后,几乎是无感知的,在页面上马上就能看到效果。早期前后端不分离的时候,前后台是耦合在一起的,通过tomcat发布,页面都在webapp下。随着前端的发展,已经完全摆脱了后端的束缚。nodejs相当于是一套独立的服务器,可以独自启动。
当然,偶尔会有不更新的情况,比如说新增一个vue文件,编辑器可能没这么智能,就识别不到。但是大部分情况都是热更新的。至于原理,早期文章有涉及,这里就不多说了,包括缺点。
Spring Boot开发体验
说回到springboot,我们都知道主要有几种情况:
1、修改已有方法内的代码。
2、新增方法
1、修改已有方法
其实修改已有方法,完全不需要借助额外的工具,IDEA本身的hot swap就能更新。只要按下ctrl+shift+f8 编译当前文件即可。不要小看这个方法,很多老程序员都不一定会,我见过很多人依然在乖乖重启项目。
2、新增方法
如果是新增的方法,上面的方式就不行,会提示热更新失败。
我们可以借助jrebel,很强大,不仅仅用于springboot项目,但是它是要收费的,感兴趣的可以去找找学习一下,这里就不多说了。
还有一种方式就是接触springboot自己的spring-boot-tools了。怎么使用它,网上的文章很多,这里就不再重复提了,没意思。
往期的文章也有:
spring-boot-devtools使用体验
spring-boot-tools的使用体验并不好,它是重新启动项目,虽然只是重新加载应用下的代码,比实际启动快一些,但是这个重启的顿挫感太明显了。重启的过程中,接口也无法访问,假如你修改了代码,但是还并不想马上重启。举个例子:
1、有A、B两个接口,现在修改B接口,我想访问A接口,devtools帮你重启了项目,这个时候就帮了倒忙了,项目还在重启中。
2、有A、B两个接口,现在修改B接口,我想访问B接口,devtools帮我重启,很好,但是实际体验并不好,这个和我自己重启项目差不多,我还是要等很久。
因此实际上没多少人用devtools,只会用idea自带的热更新更方便,更新不了就重启。
奇思妙想(干货!!!)
你去全网搜一下就会发现,除了jrebel并没有什么解决方案,最后只能乖乖重启。
有个方法就是:
1、同一个应用以不同端口启动两次,可以利用services,一键启动很方便,不知道的可以去了解一下services启动方式。
2、接着其中一个应用配置成devtools启动,另一个应用不启动。
应用1:不重启
-Dspring.devtools.restart.enabled=false
应用2:重启
-Dspring.devtools.restart.enabled=true
就像这样陪在VM option里。
3、利用nginx代理,指向这两个应用。
有什么用吗?就是应用1 还保留了旧代码可以正常调用,应用2就会自己重启项目,nginx自带负载均衡,postman点两次就能调到应用2了。
至此,就解决了一个问题:“每次修改代码就自动重启,影响我们正常调用接口。”
但是!!!!!!!!!
但是!!!!!!!!!
但是,我不会用,我选择自己重启!
往期推荐
• 加密算法代码实现:AES、3DES、RSA、SM2、SM3、SM4• 一文了解人工智能AI、大模型、AI大模型、ChatGPT、GPT-4、OpenAI、Claude 3...• 网友:Vue3更像是胡乱拼凑的残次品,使用它是为了跟风,怕被人说落伍• Springboot接口能用两个@RequestBody修饰入参吗?
如果觉得还不过瘾,下面是在下整理的合集,里面有诸多好文供大家食用!
精彩合集
16)
14)
13)
14)
34)
8)
6)
喜欢的话帮忙一键三连:“点赞、关注、收藏”,这是我创作的动力,感谢您的支持。今后我将持续输出,争取奉献更多优秀好文,和最实用的干货。
点个“在看”支持一下