Has anyone used ServiceLoader together with Guice?

前端 未结 3 1665
既然无缘
既然无缘 2021-01-31 11:41

I keep wanting to try this on a larger scale with our app + build system, but higher priorities keep pushing it to the back burner. It seems like a nice way to load Guice module

相关标签:
3条回答
  • 2021-01-31 11:48

    We're doing almost exactly this at my work. We're currently stuck in java 5 due to some internal limitations, so we do it a bit differently using Service Provider (due to not having access to ServiceLocator until java 6 like you mentioned), but it essentially works the same.

    I remember reading somewhere that this was one of the preferred ways the Guice developers recommended, though they want to leave this open for flexibility.

    0 讨论(0)
  • 2021-01-31 11:55

    "because its impossible to bind the same interface twice."

    This is indeed wrong! With Guice's Multibinder there is a way to work with different implementations of the same interface, possibly bound in different modules.

    I came to a slightly different solution for the actual loading than Mark Renouf (his ModuleLoader looks indeed better), but my blog post may show a bit more about the environment where this approach is applicable (Plugins) and what the extension points look like:

    Guice 2.0 Multibinder + Java ServiceLoader = Plugin mechanism

    0 讨论(0)
  • 2021-01-31 12:11

    I considered this way already but i didnt use it because i was afraid, that i have to keep my modules extremely small, because its impossible to bind the same interface twice. My problem is, that if i want to use an interface/class/enum/whatever from another jar and that jar defined a services/* file i am screwed, because i cant make use of the content of the jar without loading it as a module.

    I hope my concern is clear.

    0 讨论(0)
提交回复
热议问题