如果我可以利用Scala 2.8的命名和默认参数功能,我宁愿在JavaBean属性注入上使用构造函数注入。存在哪些IoC容器支持或可以轻松扩展? (所需信息在运行时的scala.reflect.ScalaSignature
注释中存在。)
我对IoC容器也有一些基本的(?)期望:
user
中那样注入了new ConnectionPool(user="test")
。 Spring可以做到这些,但是它不支持命名参数。我已经考虑使用FactoryBean
- s来桥接Scala和Spring,但就我看来,这意味着太麻烦(样板或代码生成)。
答案 0 :(得分:3)
我有一个正在进行中的反射库,用于解析Scala签名,目前能够解析命名参数:https://github.com/scalaj/scalaj-reflect
不幸的是,我还没有将它重新绑定到Java反射中以便能够调用方法,也没有添加逻辑来解析默认值(尽管这个应该是微不足道的)。这两个功能在我的待办事项列表中非常高:)
这不是IoC容器本身,但它是我的另一个项目的先决条件:https://github.com/scalaj/scalaj-spring。 scalaj-spring的工作停止了,因为在我基于签名的反射到位之前,我无法做出任何有价值的进一步进展。
所有这些东西都是针对大企业人士的。那些别无选择,只能将他们闪亮的新Scala代码集成到一些笨重的遗留系统......如果那不是你的用例,那么你可以直接在Scala内部进行Scala DI。
提升横幅下提供了DI支持:http://www.assembla.com/wiki/show/liftweb/Dependency_Injection
你也应该寻找蛋糕模式的参考
答案 1 :(得分:2)
Scala中的另一个依赖注入框架是subcut
答案 2 :(得分:1)
我考虑过使用FactoryBean-s来桥接Scala和Spring,但这意味着太麻烦
我不确定我是否理解复杂性。实际上,在Scala中实现Spring FactoryBeans非常简单。查看这篇小文章http://olegzk.blogspot.com/2011/07/implementing-springs-factorybean-in.html
答案 3 :(得分:1)
我刚刚发布了Sindi,一个用于Scala编程语言的IoC容器。