java - 注入(inject)设置还是加载一次全局查找?

标签 java architecture dependency-injection guice application-settings

仍然掌握良好的依赖注入(inject)技术与过度杀伤的技巧。感谢您的想法。

我有一个应用程序,当它启动时,它会从文件中读取设置。稍后它可能是一个数据库,我已经编写了以依赖注入(inject)(Guice)方式加载设置的部分,这不是问题。这些设置不会因应用程序的正常使用而更改,但在未来的版本中,我可能希望允许用户从 GUI 更改这些设置。

这是实际的问题:我应该如何让代码的各个部分访问这些设置?有些设置仅在对象层次结构的深处才重要,但父对象不需要了解它们。所以我可以:

  1. 使用单例,然后在构造函数中查找适当的设置
  2. 将不同的设置(或整个设置类)沿着对象树传递
  3. 创建由 Guice 模块加载的工厂,然后使用 Factory.get()

我不确定 #3 比 #1 好多少...或者是否有更好的方法?

注意:当我使用 Guice 时,这更多的是一个架构问题,而不是“我如何使用 XXX 框架”问题。因此,即使您不认识 Guice,也不要害怕回答。

最佳答案

如果您使用 CDI,您可以使用“@Singleton”注释您的 Singleton 类,然后将此类的对象注入(inject)到子类属性中。
不知道Guice怎么样。
我认为使用注入(inject)机制来确保只有一个 Property 实例是最好的解决方案。
希望我能帮忙。

关于java - 注入(inject)设置还是加载一次全局查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15009325/

相关文章:

java - 使用现有字段命名新对象 - Java

java - 查询 Firebase DatabaseReference 的习惯用法是什么?

flutter - 如何在单个页面中处理多个 block ?

java - Guicejector.getInstance 抛出配置异常

java - 请问java RMI的意义?

java - UltraESB 启动错误

javascript - 处理与 WebPack 连接有关的文件顺序?

javascript - 普遍接受的 JavaScript 代码组织最佳实践

java - 是否有与 @Assisted 等效的 javax.inject.*

android - 是否可以使 Dagger 应用程序组件无效并在android中创建一个新的 Dagger 应用程序组件