如何从Kotlin中的spring application.yaml获取变量

时间:2019-09-15 18:10:39

标签: spring-boot kotlin

我的application.yaml中有app.name

我希望如何使用它,我希望有一个简单的衬垫。

@Values似乎不起作用,它仅在我的restcontroller中起作用。我已经创建了一个configurationproperties和一个EnableConfigurationProperties,但是没有人会告诉我如何从这些属性中实际获取值。

class databaseHandler() {

@Value("\${app.url}")
private val url: String? = null

fun dave(){
 print(url)
} ==Null

==

@Component
@ConfigurationProperties("app")
class appConfig(){
   lateinit var url: String
}


@EnableConfigurationProperties(appConfig::class)
class dave(){
fun dave(){
 print(appConfig().url)
} ==Lateinit url hasn't been initalized
}

2 个答案:

答案 0 :(得分:0)

假设application.yml具有以下属性:

app-url: www.demo-url.com 

@EnableConfigurationProperties添加到绑定类,即

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
class appConfig() {
   lateinit var url: String
}
  

@EnableConfigurationProperties此批注用于在Spring应用程序中启用@ConfigurationProperties批注的bean

请参考:https://www.baeldung.com/spring-yaml

答案 1 :(得分:0)

解决了这个问题,您还需要初始化子类,并将其声明为spring组件,例如

@Service
class DatabaseHelper {
    @Value("\${app.url}")
    val url= ""
}


@RestController
@RequestMapping("/")
class GitHubController{

    @Autowired
    lateinit var databaseHelper : DatabaseHelper 

    @GetMapping("")
    fun hello() = "hello $databaseHelper.url"
}