是否可以创建一个单例对象,并将其作为一个实例或集合或映射的一部分独立注入?
例如,我有两个类似的Instance:
@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
?如何在集合中单独使用相同的实例?
在Guice模块中,您可以将这些实例绑定到如下集合:
@Provides
fun publisherListenerSet(
@Named("car.listener") val carListener: PublisherListener,
@Named("bike.listener") val bikeListener: PublisherListener
): Set<PublisherListener> {
setOf(carListener, bikeListener)
}
或者你可以使用:
protected override fun configure() {
val publishingListenerSetBinder = Multibinder.newSetBinder(binder(), PublisherListener::class.java)
publishingListenerSetBinder.addBinding().annotatedWith(Names.named("car.listener"))!!.to(PublishingListener::class.java)
publishingListenerSetBinder.addBinding().annotatedWith(Names.named("bike.listener"))!!.to(PublishingListener::class.java)
}
由于您实际上没有调用provider方法,注入器可以保持provider提供的东西的单一性。
对不起,如果这是一个微不足道的问题,我是新的指南。假设我有下面这个类: 然后在其他地方我想做: 我希望有两个“MyClass”实例,一个名为“foo ”,一个名为“bar ”(也就是说,它们中的每一个都有一个不同的依赖实例)。我如何将这两个实例添加到我的注入器中,如何用“injector.getInstance”检索它们中的每一个? 我不想为每个可能的依赖项创建一个“MyClass”的子类。 谢谢
你也可以在spring容器外使用repository组件,比如在CDI环境中,你依然需要一些spring的libraries在你的classpath中,但通常你也能以编程的方式来搭建repositories。你可以像下面示例一样使用由Spring Data模块提供各种repository持久化支持的RepositoryFactory。 RepositoryFactorySupport factor
我在同一个活动中使用了两个时间选择器,让用户为特定任务选择开始时间和停止时间,我使用了支持库中可用的DialogFragment类,以向后兼容旧的Android版本。
我正在尝试制作一个定制的spring cloud stream活页夹,但它无法自动注册: 活页夹实现: 配置类: Spring活页夹文件: application.yml 我已经按照spring cloud stream的指导方针创建了一个custome活页夹,但这不起作用。此外,使用@Configuration创建绑定bean会禁用我在类路径上添加的kafka绑定。
开发者可以在脱离Spring容器的情况下利用RepositoryFactory来使用Spring Data repository(比如在CDI环境下),但仍然需要将某些Spring的依赖包加到classpath中。 Example 14. Standalone usage of repository factory(独立使用) RepositoryFactorySupport factory =