我正在學習 springboot 并嘗試連接到 DB2 資料庫。我讓它作業得很好。
以下是我的作業 DB2 屬性:
spring.datasource.url=jdbc:db2://server:port/database:currentSchema=schema-name;
spring.datasource.username=user1
spring.datasource.password=password1
但是我將它們重命名為以“db2”而不是“spring”開頭,例如:
db2.datasource.url=jdbc:db2://server:port/database:currentSchema=schema-name;
db2.datasource.username=user1
db2.datasource.password=password1
我的應用程式仍然運行,但是,當我這樣做時,我的控制器不再像重命名之前那樣回傳結果。
我問這個的原因是,如果我將來添加第二個資料源,如果我這樣命名它們,我可以通過它們的資料源輕松區分屬性。
更新:
感謝@Kosta Tenasis 下面的回答和這篇文章(https://www.javadevjournal.com/spring-boot/multiple-data-sources-with-spring-boot/),我能夠解決并解決這個問題。
然后回到我的具體問題,一旦你有了資料源的配置,你就可以修改 application.properties 有:
db2.datasource.url=...
而不是:
spring.datasource.url=...
注意1:如果您使用的是Springboot 2.0,他們改為使用Hikari,而Hikari沒有url屬性而是使用jdbc-url,所以只需將上面的更改為:
db2.datasource.jdbc-url=...
注意2:在將多個資料源添加到專案時必須創建的資料源中,您將有 annotation @ConfigurationProperties。此注釋需要指向您更新的 application.properties 資料源(db2.datasource.url)。
uj5u.com熱心網友回復:
默認情況下,Spring 會查找要連接spring.datasource.**的屬性DataSource。
所以你可能會得到錯誤的結果,因為你沒有連接到資料庫。如果你想用不同的默認屬性配置資料源,你可以這樣做
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix="db2.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create()
.build();
}
假設有一天,你想要一秒鐘DataSource,你可以將上一個類修改為:
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix="db2.datasource")
public DataSource d2Datasource() {
return DataSourceBuilder.create()
.build();
}
@Bean
@ConfigurationProperties(prefix="db3.datasource")
public DataSource db3Datasource() { //pun intented
return DataSourceBuilder.create()
.build();
}
}
然后在Class你想要的每一個中,DataSource你可以指定你喜歡的bean:
public class DB3DependedClass{
private final DataSource dataSource;
public DB3DependedClass(@Qualifier("db3Datasource") DataSource dataSource){
this.dataSource = dataSource;
}
}
所以默認情況下 spring 會尋找
spring.datasource.url (or spring.datasource.jdbc-url)spring.datasource.usernamespring.datasource.password
如果您指定另一個DataSource您自己的值,則不需要這些值。
所以在上面我們指定的例子中,假設db3.datasourcespring 將尋找
db3.datasource.urldb3.datasource.usernamedb3.datasource.password
這里重要的是spring IS NOT推斷意味著完整路徑確實是:db3.datasource.url
并且NOT
spring.db3.datasource.url
最后,總結一下,spring如果你愿意,你可以靈活地通過宣告一個前綴spring.any.path.ilike.datasouce,當然也可以在相關值下宣告它。只要您指定它,Spring 就會選擇任一路徑。
注意:此答案僅寫在此處提供的文本框中,未在 IDE 中測驗編譯錯誤。邏輯仍然成立
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477147.html
