使用单例的Scala依赖注入

时间:2015-03-09 17:07:30

标签: scala dependency-injection

我是Scala的新手,我正试图找出依赖注入的最佳方法。我有Java背景,过去常常使用Guice和Spring IoC。

我曾经使用带有@Provider批注的提供者类来选择实现或在Spring中使用beans.xml,只需使用@Inject批注(或在Spring,@ Autowired中)将类的实例注入到我的服务中。

在Scala中,我读到了蛋糕模式,但对我来说似乎相当复杂。我想要实现的就是我已经拥有的Java:获取具有特定实现的接口类型的单例。

我的问题是使用Scala对象类型是否足够。

示例:

trait TestDI { }
class Impl1 extends TestDI { }
class Impl2 extends TestDI { }
object TestDI extends Impl1 { }

所以我只是在我的服务中使用TestDI,它实际上会使用Impl1的实现。所以我的初始界面(特征)和单例对象将具有相同的名称。

1 个答案:

答案 0 :(得分:0)

我认为MacwireScaldi与Guice风格非常接近。我喜欢Macwire,因为它是基于宏的标准Scala框架,没有使用其他魔法酱(如字节操作)。

其他做DI的方法在我的回答中有描述:

Scala - write unit tests for objects/singletons that extends a trait/class with DB connection