2017-05-25 135 views
1

我正在尝试创建以下bean AmazonDynamoDBAsyncClientProvider。我有application.properties,它定义了endpointtablePrefix,我试图使用它来注入@ConfigurationPropertiesKotlin spring-boot @ConfigurationProperties

以下是相同的代码片段。当我运行我的spring-boot应用程序时,它不起作用。

我试过做同样的ConfigurationProperties类使用一个普通的java类,它确实设置了这些属性,但是当涉及到AmazonDynamoDBAsyncClientProvider时,属性是空的。我在这里错过了什么?

@Component 
open class AmazonDynamoDBAsyncClientProvider @Autowired constructor(val dynamoDBConfiguration: DynamoDBConfig){ 

@Bean open fun getAmazonDBAsync() = AmazonDynamoDBAsyncClientBuilder.standard() 
     .withEndpointConfiguration(
       AwsClientBuilder.EndpointConfiguration(dynamoDBConfiguration.endpoint, dynamoDBConfiguration.prefix)) 
     .build() 
} 

这里要说的是,我试图与配置自动装配的科特林豆

@Component 
@ConfigurationProperties(value = "dynamo") 
open class DynamoDBConfig(var endpoint: String="", var prefix: String="") 

最后继承人的常规的Java bean,它逐渐加入ConfigurationProperties,但是当它得到Autowired我看到那些性质是空/空

@Component 
@ConfigurationProperties("dynamo") 
public class DynamoDBConfiguration { 
private String endpoint; 
private String tablePrefix; 

public String getEndpoint() { 
    return endpoint; 
} 

public void setEndpoint(String endpoint) { 
    this.endpoint = endpoint; 
} 

public String getTablePrefix() { 
    return tablePrefix; 
} 

public void setTablePrefix(String tablePrefix) { 
    this.tablePrefix = tablePrefix; 
} 
} 
+0

什么意思是“当我运行我的弹簧启动应用程序它不起作用。”?如果有的话,记录的错误信息是什么? – miensol

+0

“当我运行我的spring-boot应用程序时,它不起作用。”,我的意思是当我使用SpringBoot应用程序运行我的Kotlin应用程序,并且如果我在那里记录'getAmazonDBAsync',我看到这两个属性是空/当我使用常规Java类的属性。 – learnedSch0lar

回答

2

您是否试图摆脱ConfigurationProperties类上的@Component注释?

下面是我用Kotlin和Spring做的,希望它有帮助。

我想充分利用科特林弹簧和科特林-allopen gradle这个插件

dependencies { 
    classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlinVersion" 
    classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion" 
} 
apply plugin: 'kotlin-spring' 
apply plugin: 'kotlin-noarg' 
noArg { 
    annotation("your.noarg.annotation.package.NoArg") 
} 

他们这样做让Spring开发与科特林更容易了很多。

@ConfigurationProperties("dynamo") 
@NoArg 
data class DynamoDBConfiguration(var endpoint: String, var prefix: String) 
相关问题