С помощью Spring вы можете определить свойство массива и заставить Spring вводить по одному из каждого (@Component) класса, производного от данного типа.
Есть ли эквивалент для этого в Guice? Или точка расширения для добавления этого поведения?
Это похоже на пример использования Guice MultiBinder . У вас может быть что-то вроде этого:
interface YourInterface {
...
}
class A implements YourInterface {
...
}
class B implements YourInterface {
...
}
class YourModule extends AbstractModule {
@Override protected void configure() {
Multibinder.newSetBinder(YourInterface.class).addBinding().to(A.class):
Multibinder.newSetBinder(YourInterface.class).addBinding().to(B.class):
}
}
И вы можете ввести Set<YourInterface>
где угодно:
class SomeClass {
@Inject public SomeClass(Set<YourInterface> allImplementations) {
...
}
}
Это должно соответствовать тому, что вам нужно.