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,一起学习