我有一个应用程序,能够在应用程序运行时更改属性,即在运行中!
我创建了一个Singleton来保存我的应用程序需要的所有配置属性,这样我就不必导入我的" PropertyLoader"图书馆在" n"在我的代码中的地方。 Singleton中的所有属性都是val
。然后我在需要该属性的任何地方导入该对象。将配置属性存储在像这样的Singleton中是一种好习惯吗?
我的下一个问题是:我应该将这些val
设为def
s,以便在更改属性时反映出属性的新值吗?或者我应该将它们更改为lazy val
,以便在属性的初始化引发异常(例如:错误类型)时我受益,它将尝试在下次访问时重新初始化val。 (顺便说一句。在阅读Viktor Klang的推文后,我测试了lazy val
的这种行为:https://twitter.com/viktorklang/status/104483846002704384
typesafe配置库(https://github.com/typesafehub/config)在这方面有什么好处吗?