对于Scala中的配置属性,使用`def` vs`lazy val` vs`val`

时间:2014-06-20 18:30:42

标签: scala configuration app-config lazy-initialization typesafe

我有一个应用程序,能够在应用程序运行时更改属性,即在运行中!

我创建了一个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)在这方面有什么好处吗?

0 个答案:

没有答案