是否可以在 Kotlin 中注释 class 构造函数
Is it possible to annotate class constructor in Kotlin
澄清
这个问题是在 kotlin
发布 1.0 版之前提出的。示例中的语言语法已经过时,请遵循官方文档。
我正在玩 kotlin 和 spring 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) {
//...
}
澄清
这个问题是在 kotlin
发布 1.0 版之前提出的。示例中的语言语法已经过时,请遵循官方文档。
我正在玩 kotlin 和 spring 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) {
//...
}