Предположим, у меня есть класс:
@References(
value={
@Reference(name="dataSources",cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,policy=ReferencePolicy.DYNAMIC,strategy=ReferenceStrategy.EVENT,bind="bind",unbind="unbind",referenceInterface=DataSourceProvider.class)
})
public class DataSourceStoreServiceImpl implements DataSourceStoreService {
List<DataSourceProvider> dataSourceProviders = new CopyOnWriteArrayList<DataSourceProvider>();
public void bind(DataSourceProvider dataSourceProvider) {
dataSourceProviders.add(dataSourceProvider);
}
public void unbind(DataSourceProvider dataSourceProvider) {
dataSourceProviders.remove(dataSourceProvider);
}
}
Вот как я обрабатываю рефери с MULTIPLE
мощностями.
Мой вопрос: можно ли это сделать без шаблона? Я имею в виду что-то вроде этого:
public class DataSourceStoreServiceImpl implements DataSourceStoreService {
@CollectionType(CopyOnWriteArrayList.class)
@Reference(name="dataSources",cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,policy=ReferencePolicy.DYNAMIC,strategy=ReferenceStrategy.EVENT,bind="bind",unbind="unbind",referenceInterface=DataSourceProvider.class)
List<DataSourceProvider> dataSourceProviders
}
Использование аннотаций IPojo.
Просто объявляя массив с аннотацией "требуется", как в этом примере:
@Requires
private Hello[] m_hello; // Service Dependency
Затем вы можете позвонить в свои службы следующим образом:
for(Hello helloService: m_hello){
helloService.ohHai("Test");
}
О, я забыл, ваш класс провайдера требует 2 аннотации: @Component
и @Provides
а ваш потребительский класс нуждается в @Component
и @Instantiate