如何并行配置Guice模块?

时间:2018-01-16 19:15:42

标签: java guice

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

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

例如,如果有一种方法可以组合或合并两个Guice注射器,我可以在不同的线程中创建它们,然后再加入它们。

1 个答案:

答案 0 :(得分:0)

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

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

  

Guice的默认Singleton范围同步a上的所有对象创建   单锁(见这里)。这样做是为了避免使用循环进行死锁   依赖。 Governator添加了FineGrainedLazySingleton注释   锁定Guice Key,以便可以创建多个单例   同时。循环依赖很少见   FineGrainedLazySingleton在这些情况下面临死锁风险   更好的并发性的好处。

     

使用FineGrainedLazySingleton注释的类将是

     
      
  1. 懒洋洋地创建(像Lazy Singleton)
  2.   
  3. 由FineGrainedLazySingletonScope创建,它同步   Guice Key而不是InternalInjectorCreator.class)
  4.   
  5. 能够与其他FineGrainedLazySingleton一起创建   不同的主题
  6.