哪个是存储主数据的正确位置

时间:2018-04-04 16:17:30

标签: java spring spring-mvc

我正在开发一个spring MVC Web应用程序。有一些主数据,例如货币代码INR,我需要在jsp页面上与来自表单bean的数据进行比较。那么哪个应该是存储主数据的正确位置。它应该在属性文件中还是我需要从数据库中获取它并将其存储在任何范围内? 任何形式的帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

如果您不希望经常更改数据,则属性文件可以作为开始。它在开发工作方面最简单。但请注意,要更改数据,您需要重新启动应用程序。

此外,如果应用程序在多台计算机上运行,​​则每台计算机都将具有单独的属性文件。因此,您必须在所有计算机上编辑属性文件。

如果要公开向最终用户更新配置的功能,则数据库会更好。无论您拥有多少个应用程序节点,数据库都将充当单一事实来源。 按货币代码表示https://www.iban.com/currency-codes.html等数据? 在这种情况下,少量数据不会经常变化。 所以属性文件没问题。在oder中将属性注入为映射(未知数量的键,未知的确切键值),您需要使用@ https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#boot-features-external-config-loading-yaml中所述的@ConfigurationProperties

如果您的项目将其用于其他目的,我会选择数据库。否则我会去找属性文件。

答案 1 :(得分:0)

如评论中所述,即使您每隔一年更改一次,业务数据也属于数据库。属性文件是技术属性的好地方,尤其是在加载Spring上下文之前所需的属性文件。这些可能是数据库凭据,日志记录级别等。

考虑一下,如果您开始在不同的主机上对应用程序进行负载平衡,那么您也有多个属性文件。想象一下,如果您忘记更新其中一种货币,那么当您的应用的每个实例计算出不同的价格时,您就会搞砸整个数据库的一致性。

答案 2 :(得分:0)

您可以考虑将yml / properties文件与Spring Cloud Config一起使用。它非常简单易用,它将为您提供一种在运行时更新属性的方法,无需重新部署甚至重新启动。因此,请不要忘记启用Spring Actuator endpoints并熟悉@RefreshScope注释。