Можно ли создать один одноэлементный объект и иметь возможность внедрить его независимо как один экземпляр, или как часть набора или карты?
Например, у меня есть два объекта, подобных этому:
@Provides
@Singleton
@Named(value = "bike.listener")
fun bikeListener(
mapper: ObjectMapper,
amazonSNS: AmazonSNS,
kafkaPublisher: KafkaPublisher
): PublishingListener {
return PublishingListener(
mapper = mapper,
amazonSns = amazonSNS,
kafkaPublisher = kafkaPublisher
)
}
@Provides
@Singleton
@Named(value = "car.listener")
fun carListener(
mapper: ObjectMapper,
amazonSNS: AmazonSNS,
kafkaPublisher: KafkaPublisher
): PublishingListener {
return PublishingListener(
mapper = mapper,
amazonSns = amazonSNS,
kafkaPublisher = kafkaPublisher,
)
}
... и я использую их в своих классах, вводя их напрямую через параметры @Named
. Но у меня также есть вариант использования, где я хочу внедрить их обоих в набор.
Так что-то вроде:
@Inject
Set<PublishingListener> listeners; // carListener and bikeListener here
Можно ли создать MultiBinder
, который будет использоватьуже определенные экземпляры? Как я могу использовать один и тот же экземпляр в наборе и отдельно?