Annotations 可以在Kotlin中注释类构造函数吗
澄清 这个问题是在kotlin推出1.0版之前提出的。示例中的语言语法现在已经过时,请遵循官方文档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和springdi。 我想使用基于构造函数的依赖项注入,所以我需要对构造函数进行注释 我尝试了以下方法:
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) {
//...
}