Kotlin 與 Spring boot整合,@Value
的問題
Java與Spring boot整合@Value
的用法
...
@Value("${url}")
private String url;
...
Kotlin中無法這麼使用,因為"${xxx}"
在kotlin裡面會被編譯器解析
我們來看下kotlin的語法
val s = "abc"
val str = "$s.length is ${s.length}" // 求值結果為 "abc.length is 3"
解決方案有三種
-
加上轉義標識
@Value("${some.property}")
-
修改
@Value
中的識別符號$
修改為其他@Bean fun kotlinPropertyConfigurer() = PropertySourcesPlaceholderConfigurer().apply { setPlaceholderPrefix("%{") setIgnoreUnresolvablePlaceholders(true) } @Bean fun defaultPropertyConfigurer() = PropertySourcesPlaceholderConfigurer()
-
使用
@ConfigurationProperties
@Component @ConfigurationProperties("foo") class Properties() { lateinit var a: String lateinit var b: String } @SpringBootApplication @EnableConfigurationProperties(Properties::class) class Application fun main(args: Array<String>) { SpringApplication.run(Application::class.java, *args) }
歡迎大家加入kotlin QQ群:188963176,一起學習