我正在将软件从Scala 2.12.8升级到2.13.0,发现尝试使用Spring在2,12,8正常运行的Bean注入时出现了一种奇怪的行为。
要将所有人都放在同一页上,这是为了重现而进行的简短测试:
TestUp scala类
@Service
class TestUp {
val value: String = "test"
}
知道bean配置已经在映射上面的类的包,我尝试这样做:
Scala类:
class LoginHandler extends SimpleUrlAuthenticationSuccessHandler {
@Autowired
val test: TestUp = null
}
扩展Spring类SimpleUrlAuthenticationSuccessHandler会执行我的身份验证逻辑,但是我简化了场景以说明该类在Spring上下文中。
当工作流通过此类时,我可以完美地注入“测试”对象。
现在出现了实际问题,当我尝试将相同的TestUp bean注入scala静态对象时,它根本不起作用。例如:
object tests {
@Autowired
val test: TestUp = null
}
所以在这里我没有显式错误,但是对象“ test”永远保持空值。当我向不从任何Spring类扩展也没有任何Spring注释的类中进行注入时,也会发生同样的情况!
这在以前的scala(2.12.8)上有效,但是在升级后它不再起作用。在升级说明中我没有找到任何关于此的信息。
通过我的Spring核心版本为4.2.9.RELEASE
我猜测是因为静态对象现在不再具有spring上下文,但是我不确定,我也不知道如何解决。
所以我的问题是,为什么它不再起作用以及如何解决(或克服)它?