dependency injection - Java inject implementations from multiple modules using TypeLiteral -
i have issue multiple implementations of interface, or rather injecting them list. question direct follow question:
java inject implementation using typeliteral
so refer havilly examples , refer solutions.
i have interface:
public interface iimplementme { public string getvalue(); }
and have multiple implementations of iimplementme
interface different modules of project binded:
register(iimplementme.class).annotatedwith(names.named("somename")).to(someimplementation.class);
everything zipped list in module
private static class customtypeliteral extends typeliteral<list<iimplementme>> { } bind(new customtypeliteral()).toregistry();
and there 2 assumptions (that makes story different linked question)
- i not know implementations of
iimplementme
, in particular if singletons (i can force if needed) - they binded in different modules not managed me directly (and don't want bind implementations myself)
similarly, want inject list of of them in @singleton class , call them whenever needed.
@singleton class someendpoint { @inject public someendpoint(final list<iimplementme> implementations){ /// } }
and question is: guaranteed guice pick implementations ? know won't available in constructor(the list empty) after list should refreshed understand guice. i'm concerned scenario implementations not singletons , not used anywhere else beside class injects list(someendpoint
in example) (i'm worried they'll never initialized never added list).
one additional thought: i'm not using multibinder(i avoid if possible since don't want force other users use aswell, bit clearer if register @named implementation of iimplementme
theirs modules).
Comments
Post a Comment