ber*_*rdw 12 spring scala lift autowired
我试图使用Spring与Scala.我知道Autowired可以使用Scala类,但我使用的是需要一个对象的Web框架,我想在其中注入一个dao.我想知道该怎么做?对不起,我是Scala的新手,先谢谢了.
@Service
object UserRest extends RestHelper {
@Autowired
@BeanProperty
val userRepository: UserRepository = null;
.....
}
<beans>
.....
<bean id="userRest" class="com.abc.rest.UserRest" >
<!--- this is my attempt to manually wire it --->
<property name="userRepository" ref="userRepository"/>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 15
基本上,你有两个问题:
财产应该是可变的,var而不是val
Scala的所有方法object都是static,而Spring需要实例方法.实际上,Scala使用UserRest$在场景后面命名的实例方法创建一个类,并且您需要使其单例实例UserRest$.MODULE$可用于Spring.
Spring可以将配置应用于预先存在的单例实例,但它们应该由方法返回,而是UserRest$.MODULE$一个字段.因此,您需要创建一个返回它的方法.
所以,这样的事情应该有效:
object UserRest extends RestHelper {
@BeanProperty
var userRepository: UserRepository = null;
def getInstance() = this
...
}
Run Code Online (Sandbox Code Playgroud)
.
<bean id="userRest"
class="com.abc.rest.UserRest"
factory-method = "getInstance">
<property name="userRepository" ref="userRepository"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
可以替换<property>使用@Autowired,但不能取代人工的bean声明@Service由于与上述单一实例的问题.
也可以看看:
| 归档时间: |
|
| 查看次数: |
14247 次 |
| 最近记录: |