Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Annotations 可以在Kotlin中注释类构造函数吗_Annotations_Kotlin - Fatal编程技术网

Annotations 可以在Kotlin中注释类构造函数吗

Annotations 可以在Kotlin中注释类构造函数吗,annotations,kotlin,Annotations,Kotlin,澄清 这个问题是在kotlin推出1.0版之前提出的。示例中的语言语法现在已经过时,请遵循官方文档 我在玩kotlin和springdi。 我想使用基于构造函数的依赖项注入,所以我需要对构造函数进行注释 我尝试了以下方法: Configuration Import(javaClass<DataSourceConfig>()) public open class AppConfig(dataSource: DataSource) { private val dataSourc

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


我在玩kotlinspringdi。 我想使用基于构造函数的依赖项注入,所以我需要对构造函数进行注释

我尝试了以下方法:

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
    }
配置
导入(javaClass())
公共开放类AppConfig(数据源:数据源){
私有val数据源:数据源
自动连线{
this.dataSource=dataSource
}
}
配置
公共开放类数据源配置{
豆子
public open fun dataSource():dataSource{
//来源遗漏
}
}

但它不起作用。甚至可以在kotlin中注释构造函数吗? 另外,我使用的是Kotlin M10.1和Spring 4.1.4

更新: 在kotlin中可以注释构造函数问题是不允许在@Configuration中使用基于构造函数的DI尝试写入:

Configuration
public open class AppConfig [Import(javaClass<DataSourceConfig>())] (dataSource: DataSource) {
//...
}
配置
公共开放类AppConfig[Import(javaClass())](数据源:dataSource){
//...
}

此语法适用于我:

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

  Autowired constructor(dataSource: DataSource){
    this.dataSource = dataSource
  }
}
配置
导入(javaClass())
公共开放类AppConfig{
私有val数据源:数据源
自动连线构造函数(数据源:数据源){
this.dataSource=dataSource
}
}

Hrm,我认为这个问题发布后,语法发生了根本性的变化。当前的方法(根据)是在类名和参数之间添加关键字
constructor
,并对其进行注释,即


问题不在于导入注释,它是有效的。问题是spring试图访问默认构造函数(显然失败了)——这意味着它找不到任何带注释的非默认构造函数。首先,编译器抱怨“需要主构造函数调用”。然后,如果我向构造函数添加
this()
调用,它会抱怨“Val无法重新分配”。使用kotlin版本0.11.91.1。TxMy唯一的问题是为什么要使用M10?现在有一个版本1 beta 4,应该可以更好地工作。你不必回答这个问题。我只是惊讶地看到里程碑版本仍在使用。
public class AppConfig @Configuration constructor(dataSource: DataSource) {
    //...
}