我有一个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赋值则将其初始化。但是Scala需要分配。

我如何防止这种行为?

最佳答案

尝试

class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
    @SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = _
    assertNotNull(screenDao)


我没有尝试过,但是我也在考虑启动Wicket / Scala项目,并看到了this blog entry,它在其他方面也可能有用。

该博客引用的相关部分是


另外,请注意,该字段已分配给下划线(_),这告诉Scala编译程序不进行初始化,但将其保留为默认状态(在这种情况下为null)。这是注射工作所必需的。如果将其明确分配为null,则表示
将覆盖Spring bean,因为将在执行MyPage的构造函数之前进行注入。

10-06 07:26