首页 > 解决方案 > 使用可注入参数创建类

问题描述

考虑以下类:

class MongoDumpBuilder (recordingId: String, parquetService: ParquetService) {
...
}

我想注入parquetService,问题是我想创建MongoDumpBuilder如下:

注意:我想传递recordingId.stringify给班级

new MongoDumpBuilder(recordingId.stringify)
        .withPacificEvents(pacificEvents)
        .withAssets(assets)
        .withTransactions(transactions)
        .withReports(reports)
        .withExpenses(expenses)
        .build()

但这仅适用于:

new MongoDumpBuilder(recordingId.stringify, parquetService)

如果我愿意MongoDumpBuilderInject我将无法创建它

class MongoDumpBuilder @Inject()(recordingId: String, parquetService: ParquetService) {
???
}

任何想法如何解决它?

标签: scalaplayframeworkguice

解决方案


您可以使用命名来绑定recordingId. 将此添加到您的Module

bind(classOf[String]).annotatedWith(Names.named("recordingId")).toInstance(recordingId.stringify)

然后定义你的类:

class MongoDumpBuilder @Inject()(@Named("recordingId") val recordingId: String, parquetService: ParquetService) {
...
}

推荐阅读