是否可以在 Kotlin 中注释 class 构造函数

Is it possible to annotate class constructor in Kotlin

澄清 这个问题是在 kotlin 发布 1.0 版之前提出的。示例中的语言语法已经过时,请遵循官方文档。


我正在玩 kotlinspring DI。 我想使用基于构造函数的依赖注入,所以我需要注释构造函数。

我尝试了以下方法:

Configuration
Import(javaClass<DataSourceConfig>())
public open class AppConfig(dataSource: DataSource) {
    private val dataSource: DataSource

    Autowired {
        this.dataSource = dataSource
    }
}

Configuration
public open class DataSourceConfig {

    Bean
    public open fun dataSource(): DataSource {
        // source omitted
    }

}

但是没用。甚至可以在 kotlin 中注释构造函数吗?

P.S。我正在使用 Kotlin M10.1 和 Spring 4.1.4

更新: 在 kotlin 中可以注释构造函数。 问题是不允许对@Configuration

使用基于构造函数的 DI

尝试写:

Configuration
public open class AppConfig [Import(javaClass<DataSourceConfig>())] (dataSource: DataSource) {
//...
}

这个语法对我有用:

Configuration
Import(javaClass<DataSourceConfig>())
public open class AppConfig {
  private val dataSource: DataSource

  Autowired constructor(dataSource: DataSource){
    this.dataSource = dataSource
  }
}

Hrm,我认为自发布此问题以来,语法发生了根本性的变化。目前的方法(根据 docs)是在你的 class 名称和参数之间添加关键字 constructor 并注释 that,即

public class AppConfig @Configuration constructor(dataSource: DataSource) {
    //...
}