2016-12-06 86 views
0

我正在嘗試從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())。

現在出現的問題是,我的財產urlusernamepassword不被初始化。


是否有解決properties的方式(不包括所有的初始化/類使用@Autowired

我想的唯一一件事就是從文件中讀取性能和使用他們,而不是尋找「春秋最佳實踐」但對於解決

回答

0

有一個包含了數據源初始化這些特性注入,然後自動連線,數據源的@Configuration類所有DAO中的bean。因此,您不必在DAO中注入這些屬性值。

+0

但這會解決'@ Value'沒有設置變量的問題嗎? – Ivaro18

相關問題