依赖注入:一个程序是由不同的组件构成,不同组件之间有依赖关系,需要协同工作。比如:Spring框架
依赖注入很多时候要使用自身类型
package ce.scala.zhong
//7
trait Logger {def log(msg : String)}
trait Auth {
auth : Logger => //通过自身类型,可以很好地限定类型和行为
def act(msg : String) = log(msg)
}
object DI extends Auth with Logger{
override def log(msg : String) = println(msg) //override可以去掉,但是一般都会写上
}
object Dependency_Injection_57 {
def main(args: Array[String]): Unit = {
DI.act("I hope you'll like it!") //DI是object,里面的方面都是静态的,所以可以直接调用
}
}
相比Java的依赖注入,好处:
编译器可以检测模块之间的依赖注入关系是否被满足
而写入xml配置文件里的坏处:
编译器在编写这种依赖注入关系时,无法检测出配置文件中的配置是否正确
参考资料来源于大数据梦工厂 深入浅出scala 第57讲 由王家林老师讲解