java - 使用 Spring 在整个应用程序中保存数据的最佳实践
问题描述
我们介绍了 Spring Boot 和 Spring Data JPA。在旧世界中,我们有一个用于保存需要整个应用程序(国家列表等)的数据的单例。数据存储在我们的数据库中。在我们的新世界中使用 Spring 重构它的最佳实践是什么?我应该创建一个具有应用程序范围的 bean,还是现在使用缓存(@Cacheable)处理它的最佳实践?
解决方案
我建议将数据保存在数据库中,但使用流行的内存缓存库(如caffeine或Google Guava )对其进行缓存。这些库允许您快速配置可以不时刷新数据的内存缓存(每 15 分钟;每小时;每天;无论您想要什么)。您的程序代码可以根据需要多次访问缓存,它总是很快的。该库具有定期更新缓存的逻辑。
如果您的数据特别静态,例如您可能每几个月/几年更改一次的应用程序配置,您也可以考虑将其移动到静态配置文件中。Spring Boot 内置了多种漂亮的功能,用于加载外部配置(JSON 或 YAML)并将其绑定到基于 Java 的对象模型。我发现@ConfigurationProperties
注释特别有用。外部配置可以打包在 fat-jar 中,也可以通过 Spring Config Server 从外部加载。这种方法的主要优点是您的配置将存储在您的版本控制系统 (GIT) 中。您还可以对您的配置执行启动时验证,这可能会显示错误,否则这些错误会在您的服务上线时显示出来。最后,您的配置不再依赖于数据库。
推荐阅读
- azure - 本地 postgreSql 到 blob 的性能调整
- c# - 我如何使用 HTML 视频标签在 asp.net 应用程序中播放 VLC 实时流媒体视频
- php - CodeIgniter 使用 If 语句显示不同的菜单
- css - li:nth-child() 颜色格式的菜单
- excel - 使用do until循环遍历日期列表时如何跳过丢失的日期
- node.js - 下载图像并将其转换为 base64 会导致数据损坏
- ssh - 如何解决ansible中“无法通过ssh连接到主机”的问题
- excel - 循环遍历多个工作簿并根据代码排列数据
- airflow - 如何在 Airflow 中将 DAG 所有者与 Google OAuth 用户关联
- docker - docker-compose up -d --build "$@" 构建名称错误的图像