2017-05-25 18 views
1

次のBeanを作成しようとしていますAmazonDynamoDBAsyncClientProvider。私が使用しようとしているとtablePrefixを定義しているapplication.propertiesを@ConfigurationPropertiesKotlin spring-boot @ConfigurationProperties

以下に示すコードスニペットは同じものです。私がspring-boot appを実行すると、うまく動作しません。

これらのプロパティを設定する通常のJavaクラスを使用して同じConfigurationPropertiesクラスを実行しようとしましたが、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="") 

ConfigurationProperties移入が、それはAutowiredを取得したときに、私はそれらの性質があることを参照を取得ん最後にHERESに通常のJava Beanにautowireしようとしているkotlin Beanです空/ null

@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

"SpringBootアプリケーションを使用してKotlinアプリケーションを実行し、そこに' getAmazonDBAsync'を記録すると、2つのプロパティが空/ NULLであることがわかります。私はいつプロパティのための通常のJavaクラスを使用します。 – learnedSch0lar

答えて

2

ConfigurationPropertiesクラスの@Componentアノテーションを削除しようとしましたか?

ここでは私がKotlinとSpringで行ったことがあります。

私は、彼らがkotlin非常に簡単に春の開発を作るのですかkotlin-春とkotlin-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") 
} 

を活用しようとしています。

@ConfigurationProperties("dynamo") 
@NoArg 
data class DynamoDBConfiguration(var endpoint: String, var prefix: String) 
関連する問題