gpt4 book ai didi

spring - 使用带有 Scala Trait 的 Spring @Autowired

转载 作者:行者123 更新时间:2023-12-04 12:48:52 25 4
gpt4 key购买 nike

我有一个简单的场景,我扩展了一个 Scala 特征,如下所示:

    trait Vehicle {

@Autowired
private var myDistanceLogger: MyDistanceLogger = null

def travel(miles:Int) = {
println("travelling " + miles)
myDistanceLogger.logMiles(miles)
}
}

@Component
class Truck extends Vehicle {

}

即使 Truck 包在 Springs 组件扫描中,我也会收到一个空指针异常。包中的所有其他(非扩展)类都连接良好。关于什么是错的任何想法?

最佳答案

这是一个小小的猜测 - scala 中的特征被转换为 java 接口(interface),基于 this文章。
所以,你的特点:

trait Vehicle {
@Autowired
private var myDistanceLogger: MyDistanceLogger = null
}

将被翻译成:
public interface Vehicle {
public MyDistanceLogger myDistanceLogger();
}

@Autowired在 setter/getter 中没有意义,我猜这就是为什么它没有 Autowiring 的原因。

关于spring - 使用带有 Scala Trait 的 Spring @Autowired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com