导读
Viggle API开放,接入到自己的产品中,让照片跳起舞来
AI视频生视频,一次支持20秒的视频,效果挺震撼 - 模仿爆款抖音账号制作爆款视频[AI视界]
技巧在手,说走就走,妈妈再也不用担心我不能按时回家吃饭了。
是使用小技巧写不动了,主要是我写不下去了😭😭😭
技巧一:屏蔽外部依赖
屏蔽外部依赖,什么意思呢?
比如大家日常开发时候有没有这样的烦恼:
项目是基于 SpringCloud 或者是 dubbo 这样的分布式服务,你需要依赖许多基础服务。比如说某个订单号的生成、获取用户信息等。
由于服务拆分,这些功能都是在其他应用中以接口的形式提供,单测还好我还可以利用 Mock 把它屏蔽掉。
但如果自己想把应用启动起来同时把自己相关的代码跑一遍呢?
通常有几种做法:
· 本地把所有的服务都启动起来。
· 把注册中心换为开发环境,依赖开发环境的服务。
· 直接把代码推送到开发环境自测。
看起来三种都可以,以前我也是这么干的。但还是有几个小问题:
· 本地启动有可能服务很多,全部起来电脑能不能撑住还两说,万一服务有问题就进行不下去了。
· 依赖开发环境的前提是网络打通,还有一个问题就是开发环境代码很不稳定很大可能会影响你的测试。
· 推送到开发环境应该是比较靠谱的方案,但如果想调试只有日志大法,没有本地 debug 的效率高效。
那如何解决问题呢?既可以在本地调试也不用启动其他服务。
其实也可以利用单测的做法,把其他外部依赖 Mock 掉就行了。
大致的流程分为以下几步:
· SpringBoot
启动之后在 Spring
中找出你需要屏蔽的那个 API
的 bean
(通常情况下这个接口都是交给 Spring
管理的)。
· 手动从 bean
容器中删除该 bean
。
· 重新创建一个该 API
的对象,只不过是通过 Mock
出来的。
· 再手动注册进 bean
容器中。
技巧二:使用@ResponseStatus处理HTTP状态码
在处理Web请求时,有时需要返回特定的HTTP状态码。@ResponseStatus注解可以帮助我们轻松地实现这一点。
(HttpStatus.NOT_FOUND)
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) {
super(message);
}
}
当抛出UserNotFoundException时,Spring Boot会返回404状态码。
技巧三:使用Spring Boot的EnvironmentPostProcessor
你可以创建一个自定义的EnvironmentPostProcessor来在应用程序启动之前修改环境变量。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.stereotype.Component;
import java.util.Properties;
public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Properties customProperties = new Properties();
customProperties.put("app.name", "MyCustomApp");
customProperties.put("app.version", "1.0.0");
environment.getPropertySources().addLast(new PropertiesPropertySource("customProperties", customProperties));
}
}
你会想:我有病吧,我干嘛不在配置文件中修改完了在启动呢,我只能说你肤浅了,这个肯定是它的一个应用场景,我这里举例几个:
(1)动态加载配置
当配置来源动态变化(比如从远程服务或数据库加载配置)时,使用 EnvironmentPostProcessor 可以在 Spring 加载配置之前动态添加或修改属性。
例如,将配置从第三方配置中心(如 Apollo、Consul、Zookeeper)加载到 Spring 的 Environment 中。
(2)环境特定的配置调整
根据当前运行环境(dev, test, prod 等),动态调整某些配置值。
(3)优先级调整或自定义配置源
对 Environment 中已有的配置属性源(PropertySource)进行重新排序或覆盖。
例如,确保某些属性的优先级高于 application.properties,或为特定的业务逻辑加载额外的配置源。
(4)环境变量的验证或强制性设置
检查关键配置是否存在或满足要求。如果不存在,抛出异常或提供默认值。
例如,强制要求配置 server.port 的值符合某个范围,否则应用无法启动。
(5)兼容性调整
在迁移老系统时,对配置的兼容性调整。
例如,将旧的配置名映射到新的配置名,保证新老版本兼容。
(6)安全性检查
验证敏感配置(如密钥、访问令牌等)是否符合预期规则,防止配置出错或暴露风险。
技巧四:DEBUG远程调试黑科技?
所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地 的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道 远程服务端的此时的内部状态。
如何开始调试?
l 如果使用的是 Java SE 5 之前的版本,则使用的调试命令格式如下:java -Xdebug -Xrunjdwp:...
l 如果你使用的是 Java SE 5 之后的版本,则使用的命令格式如下:java -agentlib:jdwp=...
IDEA如何开启远程调试?
首先的将打包后的Spring Boot项目在服务器上运行,执行如下命令(各种参数根据实际情况自己配置):
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9193 -jar debug-demo.jar
(1)项目启动成功后,点击 Edit Configurations,在弹框中点击 + 号,然后选择Remote/远程JVM调试。
(2)然后填写服务器的地址及端口,点击 OK 即可。
以上步骤配置完成后,点击DEBUG调试运行即可。
技巧五:在线状态监控与日志下载
Spring Boot Admin 具备强大的在线状态监控功能。它能够实时跟踪应用程序的运行状况,并在出现问题时及时发出警报。这种即时反馈机制对于保证系统的稳定性和可靠性至关重要。
更重要的是,Spring Boot Admin 支持直接从界面上下载主日志文件。这对于调试错误或者分析系统行为非常有用。开发者不再需要手动登录到服务器去查找日志,而是可以直接通过 Spring Boot Admin 的界面来访问它们。这一特性极大地提高了问题解决的速度和效率。
idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇
Noisee AI中文站网页版 AI 音乐生成视频全新登场,快来抢先体验——国内第一个登场的中文站来袭 - 516篇
Spring的SmartLifecycle可以没用过,但没听过就不好了!- 第517篇
SpringBoot异常处理机制之自定义404、500错误提示页面 - 518篇
SpringBoot 中多例模式的神秘世界:用法区别以及应用场景,最后的灵魂拷问会吗?- 第519篇
SpringBoot开发的AI导航站技术架构剖析 —— 技术如何选型 - 第520篇
SpringBoot多例模式,在同一个类中注入两次是否是同一个对象 – 一不小心就会写出一个重大BUG!!- 521篇
SpringBoot基本原理,轻松应对面试官 - 第522篇
万物皆能舞,AI让你秒变“舞”林高手 – Viggle AI“舞”所不能
法定年龄退休2024年新规,我要到63岁才能退休了,看看你几岁退休,附退休对照表
又一款AI对口型神器,让照片开口说话唱歌,1分钟教会(附保姆级教程)
Viggle API开放,接入到自己的产品中,让照片跳起舞来
AI视频生视频,一次支持20秒的视频,效果挺震撼 - 模仿爆款抖音账号制作爆款视频[AI视界]