首页 > 解决方案 > 使用 Spring 在整个应用程序中保存数据的最佳实践

问题描述

我们介绍了 Spring Boot 和 Spring Data JPA。在旧世界中,我们有一个用于保存需要整个应用程序(国家列表等)的数据的单例。数据存储在我们的数据库中。在我们的新世界中使用 Spring 重构它的最佳实践是什么?我应该创建一个具有应用程序范围的 bean,还是现在使用缓存(@Cacheable)处理它的最佳实践?

标签: javaspringscopespring-data-jpa

解决方案


我建议将数据保存在数据库中,但使用流行的内存缓存库(如caffeineGoogle Guava )对其进行缓存。这些库允许您快速配置可以不时刷新数据的内存缓存(每 15 分钟;每小时;每天;无论您想要什么)。您的程序代码可以根据需要多次访问缓存,它总是很快的。该库具有定期更新缓存的逻辑。

如果您的数据特别静态,例如您可能每几个月/几年更改一次的应用程序配置,您也可以考虑将其移动到静态配置文件中。Spring Boot 内置了多种漂亮的功能,用于加载外部配置(JSON 或 YAML)并将其绑定到基于 Java 的对象模型。我发现@ConfigurationProperties注释特别有用。外部配置可以打包在 fat-jar 中,也可以通过 Spring Config Server 从外部加载。这种方法的主要优点是您的配置将存储在您的版本控制系统 (GIT) 中。您还可以对您的配置执行启动时验证,这可能会显示错误,否则这些错误会在您的服务上线时显示出来。最后,您的配置不再依赖于数据库。


推荐阅读