Я не уверен, что это именно то, что вы ищете, но я расскажу вам о практике, которая работает для меня.
Мой Java-код подключен вместе с помощью DI-инфраструктуры Google под названием Guice , API, для которого я вызываю из своего кода Scala. В качестве примера, вот модуль - это вещь конфигурации Guice - который связывает интерфейсы с их реализациями. API - это Java API, но я взаимодействую с ним из кода Scala.
class UserSessionModule(storage: ActorRef) extends AbstractModule {
protected def configure: Unit = {
bind(classOf[ActorRef]).
annotatedWith(Names.named("storage")).toInstance(storage)
bind(classOf[UserSession]).toProvider(classOf[UserSessionProvider])
}
}
Я нашел, что это очень простой подход.