【问题标题】:How to configure Guice modules in parallel?如何并行配置 Guice 模块?
【发布时间】:2018-06-07 05:51:08
【问题描述】:

背景:我的代码库有很多模块,根据一些分析,创建 Guice 注入器需要大量时间。这几乎可以肯定是由于大量的模块和一些需要很长时间配置的模块的存在。理论上,我可以生成 2+ 个可以单独配置的模块列表。

有没有办法并行化这些模块的配置?

例如,如果有办法合并或合并两个 Guice 注入器,我可以在单独的线程中创建它们,然后再加入它们。

【问题讨论】:

    标签: java guice


    【解决方案1】:

    您可能想使用 Netflix 的 Concurrent Singleton 库,它允许您以并发方式延迟加载 Guice 模块。

    https://github.com/Netflix/governator/wiki/Concurrent-Singleton

    Guice 的默认 Singleton 范围同步所有对象的创建 单锁(见这里)。这样做是为了避免循环死锁 依赖项。 Governator 添加 FineGrainedLazySingleton 注解 锁定 Guice Key 以便可以创建多个单例 同时。循环依赖很少见,所以 FineGrainedLazySingleton 在这些情况下可能会出现死锁,因为 更好的并发性的好处。

    使用 FineGrainedLazySingleton 注释的类将是

    1. 懒惰地创建(如 Lazy Singleton)
    2. 由 FineGrainedLazySingletonScope 创建,它在 Guice Key 而不是 InternalInjectorCreator.class)
    3. 能够与其他 FineGrainedLazySingleton 一起创建 不同的线程

    【讨论】:

    • 这是一个很有希望的线索,但事实证明,这些 Governator 注释由于各种原因已被弃用。我无法使用这些标签或建议的解决方法来加快速度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多