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

时间:2015-02-08 19:48:23

标签: annotations kotlin

澄清kotlin命中版本1.0之前询问了这些问题。现在,示例中的语言语法已经过时,请遵循官方文档。


我正在玩 kotlin 春季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

3 个答案:

答案 0 :(得分:16)

嗯,我认为自从这个问题发布以来,语法发生了根本性的变化。当前的方式(根据docs)是在您的类名和参数之间添加关键字constructor并注释 ,即

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

答案 1 :(得分:1)

尝试写:

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

答案 2 :(得分:0)

这种语法对我有用:

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

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