在Kotlin中创建Spring配置列表

时间:2017-12-15 03:12:37

标签: spring spring-boot kotlin yaml

我正在尝试在用Map<String, List<String>>编写的Spring Boot应用程序中创建Kotlin类型的对象。

我可以从config创建一个映射,并且还可以从config创建一个列表,但是当我尝试将两者合并时,我得到以下异常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myConfiguration': Could not bind properties to MyConfiguration (prefix=, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is java.lang.NullPointerException

我的Configuration Object

@ConfigurationProperties
@Component
class MyConfiguration {
   var myNewMap: Map<String, List<String>>? = null
}

我的Configuration yml

---
myNewMap:
   firstKey:
     - 2
     - 4
   secondKey:
     - 2

这是否可以通过Spring读取配置的方式实现?或者是创建一个简单的Map的唯一方法,将值作为逗号分隔的字符串,并将其转换为我的应用程序中的列表?

Kotlin: 1.2.0 Spring Boot: 1.5.6.RELEASE

1 个答案:

答案 0 :(得分:0)

当地图位于“ prefix”(对于弹簧启动配置建议使用)中时,对我来说效果很好。

我的yml:

apiconfig:
  myNewMap:
    firstKey:
      - 2
      - 4
    secondKey:
      - 2

和我的配置类:

@Component
@ConfigurationProperties(prefix = "apiconfig")
class ApiConfiguration {
    var myNewMap: Map<String, List<String>>? = null
}

使用类别:

@RestController
class Apis(@Autowired private val apiConfiguration : ApiConfiguration) {
    @GetMapping("/test")
    fun test(): String {
        apiConfiguration.myNewMap
        return "test"
    }
}