加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Spring @Autowired和Scala Trait

发布时间:2020-12-15 01:30:53 所属栏目:大数据 来源:网络整理
导读:我有一个简单的场景,我扩展Scala特征如下: trait Vehicle { @Autowired private var myDistanceLogger: MyDistanceLogger = null def travel(miles:Int) = { println("travelling " + miles) myDistanceLogger.logMiles(miles) } } @Component class Truck

我有一个简单的场景,我扩展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组件扫描中,我也得到一个nullpointer异常.包中的所有其他(非扩展)类都很好.关于什么是错的任何想法?

最佳答案
这是一个小推测 – 基于this文章,scala中的特征被转换为java接口.
所以,你的特点:

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

会被翻译成:

public interface Vehicle {
    public MyDistanceLogger myDistanceLogger();
}

并且@Autowired在吸气器中没有意义,我猜这就是为什么这不能自动装配的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读