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
中的标识符$
修改为其他@Beanfun kotlinPropertyConfigurer() = PropertySourcesPlaceholderConfigurer().apply { setPlaceholderPrefix("%{") setIgnoreUnresolvablePlaceholders(true)}@Beanfun defaultPropertyConfigurer() = PropertySourcesPlaceholderConfigurer()
-
使用
@ConfigurationProperties
@Component@ConfigurationProperties("foo")class Properties() { lateinit var a: String lateinit var b: String}@SpringBootApplication@EnableConfigurationProperties(Properties::class)class Applicationfun main(args: Array
) { SpringApplication.run(Application::class.java, *args)}
欢迎大家加入kotlin QQ群:188963176,一起学习