我正在嘗試從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
這是有道理的。這也表明編譯器實際上檢查是否存在於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
。但是由於我在我的所有類中都有extend
,BaseDAO
,所以它抱怨構造函數爲空(class SomeDAO : BaseDAO()
)。
現在出現的問題是,我的財產url
,username
和password
不被初始化。
是否有解決properties
的方式(不包括所有的初始化/類使用@Autowired
)
我想的唯一一件事就是從文件中讀取性能和使用他們,而不是尋找「春秋最佳實踐」但對於解決
但這會解決'@ Value'沒有設置變量的問題嗎? – Ivaro18