Я новичок в Scala и Macwire и пытаюсь выяснить, как получить доступ к экземплярам, которые подключены с помощью модулей, организованных как классы.Если модули определены как признаки, можно расширить их и получить доступ к проводным экземплярам в них, как показано ниже:
trait UserModule {
lazy val userFinder: UserFinder = wire[UserFinder]
}
class UserFinderSpec extends FlatSpec with UserModule {
assert userFinder.find(...) should ...
}
Если мои модули организованы как классы со композицией, как мне получить доступ к экземплярам?
class UserFinder(databaseConnection: databaseConnection) {
}
@Module
class DatabaseConnectionModule {
lazy val databaseConnection: DatabaseConnection = ...
}
@Module
class UserModule(databaseConnectionModule: DatabaseConnectionModule) {
lazy val userFinder:UserFinder = wire[UserFinder]
}
class UserFinderSpec extends FlatSpec {
//How to access UserFinder here?
//val wired = wiredInModule(new UserModule(new DatabaseConnectionModule))
//val userFinder = wired.lookup(classOf[UserFinder]
//Above way to access the instances seems complicated
//as I need to instantiate the modules with it's dependency chain which can be very long in my use-case.
}