【发布时间】:2017-04-20 21:09:12
【问题描述】:
我正在尝试从application-prod.properties 创建我的自己的 DataSource。
现在我知道我的 application.properties 已被读取,因为它确实获取了 prod 活动配置文件(显示在控制台中)
在我的application-prod.properties 我有以下内容:
jdbc.url=jdbc:postgresql://localhost:5432/myDb
jdbc.username=root
jdbc.password=root
jdbc.driverClassName=org.postgresql.Driver
现在,如果我更改前缀,我的控制台会抛出编译时错误Could not resolve Spring property placholder,这是有道理的。这也表明编译器实际上是在检查@Value 是否存在于properties 文件中。
@Component
open class BaseDAO(
//@Value("\${jdbc.url}") private val url: String,
//@Value("\${jdbc.username}") private val username: String,
//@Value("\${jdbc.password}") private val password: String
) {
@Value("\${jdbc.url}")
lateinit open var url: String
@Value("\${jdbc.username}")
lateinit open var username: String
@Value("\${jdbc.password}")
lateinit open var password: String
lateinit open public var datasource: DataSource;
open fun getDs(): DataSource {
return HikariCP.init(name="pool1", url = url, username = username, password = password)
}
}
现在你可以看到我尝试在构造函数中传递@Value。但是由于我在所有课程中都使用了extendBaseDAO,因此它抱怨构造函数为空(class SomeDAO : BaseDAO())。
现在出现的问题是我的属性url、username 和password 没有被初始化。
有没有办法解决properties(在所有初始化/类中不使用@Autowired。)
我唯一想要的是从该文件中读取属性并使用它们,而不是寻找'Spring 最佳实践',而是寻找解决方案
【问题讨论】:
标签: java spring spring-mvc properties kotlin