我有一个带有Page
@SpringBean
class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
@SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = null
assertNotNull(screenDao)
我发现没有填充@SpringBean。如果screenDao
是val或var,protected或private,则没有区别。
查找树我发现Component
的构造函数(间接)代表其子类初始化@SpringBean
,但是null的赋值是uninitializing。但是Scala需要这项任务。
如何防止此行为?
答案 0 :(得分:6)
尝试
class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
@SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = _
assertNotNull(screenDao)
我没有尝试过这个,但我也在考虑启动Wicket / Scala项目,并看到this blog entry,这在其他方面也可能有用。
该博客引用的相关部分是
此外,请注意该字段被分配给下划线(_),它告诉Scala编译为NOT初始化,但保留默认状态(在本例中为null)。这是注射工作所必需的。如果你明确地将它分配给null,那么你 将覆盖Spring bean,因为在执行MyPage的构造函数之前将进行注入。