scala中用implicit实现依赖注入

import scala.collection.mutable


/**
 * Created by xiaojun on 2015/2/17.
 */
object ScalaDemo extends App {


  case class User(userId: Int, userName: String)

  class UserDao {
    var users = mutable.HashMap((1, User(1, "aaa")), (2, User(2, "bbb")), (3, User(3, "ccc")))

    def findById(userId: Int) = users.get(userId)

    def findAll() = users

    def updateById(u: User) = users.update(u.userId, u)

  }

  implicit val userDao = new UserDao


  class UserService(implicit dao: UserDao) {
    def getAllUsers() = dao.findAll()

    def updateUser(u: User) = dao.updateById(u)
  }
  //这里构造函数不需要传入UserDao的实例,会自动将上面定义的userDao注入到UserService实例中
  val service = new UserService

  println(service.getAllUsers())

  //更新users中userid=1的元组
  service.updateUser(User(1, "AAA"))
  println(service.getAllUsers())

  //新建一个UserService实例service2,打印它可以看到和service打印的users集合石一致的,说明他们用的是同一个userDao实例
  val service2 = new UserService
  println(service2.getAllUsers())

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值