springboot 實現引數切換資料庫源

2021-10-21 19:30:34 字數 1951 閱讀 9891

實現乙個中英文切換的國際化需求,考慮到springboot國際化只能配置靜態資料翻譯,考慮使用分庫進行資料分開儲存,避免**邏輯大量修改.記錄一下實現思路.

yml配置檔案,配置兩個資料來源

spring:

datasource:

dynamic:

primary: cn

datasource:

cn:driver-class-name: com.mysql.cj.jdbc.driver

url:

username:

password:

en:driver-class-name: com.mysql.cj.jdbc.driver

url: jdbc:

username:

password:

啟動類取消自動選擇資料來源,

public static void main(string args) }

資料庫配置類

@configuration

@configurationproperties(prefix="spring.datasource.dynamic.datasource.cn")

@data

public class ***atasourceconfig

}

@configuration

@configurationproperties(prefix="spring.datasource.dynamic.datasource.en")

@data

public class endatasourceconfig

}

多資料來源配置:

@configuration

public class datasourceconfiguration

/*** 英文資料來源

*/@bean(name = "endatasource")

@qualifier("endatasource")

public datasource endatasource()

@bean(name = "dynamicdatasource")

@primary

public datasource dynamicdatasource()

}

public class dynamicdatasource extends abstractroutingdatasource 

}

配置資料來源上下文:

@slf4j

public class dynamicdatasourcecontextholder

public static string getdatasourcetype()

public static void cleardatasourcetype()

public static boolean containsdatasource(string datasourceid)

}

此時,資料來源配置已經完成.接下來是通過請求攔截確定請求需要訪問哪個資料來源

@component

@slf4j

public class myinterceptor implements handlerinterceptor else

log.info("資料來源為: {}",datasourcetype);

return true;

}}

@configuration

public class webmvcconfiguration implements webmvcconfigurer

}

到此功能實現完畢!

Spring Boot 引數校驗

開發過程中,後台的引數校驗是必不可少的,所以經常會看到類似下面這樣的 這樣寫並沒有什麼錯,還挺工整的,只是看起來不是很優雅而已。接下來,用validation來改寫這段 在spring boot的官網中,關於validation只是簡單的提了一句,如下 其實,spring validator和hib...

SpringBoot 引數校驗

採用註解式引數校驗機制 在control物件前新增標籤 valid 在校驗物件字段上面新增 notblank null 限制只能為null notnull 限制必須不為null assertfalse 限制必須為false asserttrue 限制必須為true decimalmax value ...

springboot請求引數

spring boot專欄 主目錄這裡的入參跟 springboot請求域共享 是對應的,請求域是將資料傳遞給前台,而請求引數 入參 是繫結獲取前台的資料。employee實體類 private integer id private string lastname employeecontrolle...