之前在网上搜了好久,但大多都是别人拷贝的内容,使用后还是“lateinit var XXX is not inited”(好像是这个错误:))。
@Configuration
@PropertySource("config/source.properties")
open class BeanConfig: Environment{
@Autowired
lateinit var env: Environment
}
每次启动使用env读取配置文件内容时,就报env未初始化。
最后直接用object定义一个静态类,读取配置文件是的内容
//object 声明的是静态类,该类所有成员都是静态成员,只能ServerConfig.xxx()来调用
@Component
@ConfigurationProperties(prefix = "source")
object ServerConfig {
// @Value("\${source.driverClassName}")
lateinit var driverClassName: String
// @Value("\${source.url}")
lateinit var url: String
// @Value("\${source.username}")
lateinit var username: String
// @Value("\${source.password}")
lateinit var password: String
}
改用@ConfigurationProperties + @Value注解读取内容,如果两个都加上,启动会有如下图的提示
注释掉@Value注解,启动就不再提示了,再就是Kotlin中@Value与Java中的使用有点区别
//Java中
@Value("${source.url}")
//Kotlin中
@Value("\${source.url}")
Kotlin还在起步,慢慢学习中
对了,使用@ConfigrationProperties注解,要引入下面的包
<!--使用@ConfigurationProperties-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>