scala
import scaldi._
trait Database {
def query(query: String): List[String]
def connect(): Unit
}
class MySQLDatabase extends Database {
override def query(query: String): List[String] = {
List("result1", "result2")
}
override def connect(): Unit = {
}
}
class Service(implicit val inj: Injector) {
val database = inject[Database]
def performQuery(): List[String] = {
database.query("SELECT * FROM table")
}
}
object Main extends App {
val module = new Module {
bind [Database] to new MySQLDatabase
}
val injector = new Injector(module)
val service = injector.instance[Service]
val results = service.performQuery()
println(results)
}