實現步驟請移步: https://blog.csdn.net/xp541130126/article/details/81739760
感謝作者的分享, 十分的詳細, 小白在實驗中遇到以下問題, 在此做個記錄, 幫助其他小新同學:
1. 主啓動類要加以下代碼, 保證啓動時就註冊這個類
/**
* Visual啓動器
*
* @author Chill
*/
@Import(DynamicDataSourceRegister.class)
@SpringCloudApplication
public class VisualApplication {
public static void main(String[] args) {
BladeApplication.run(LauncherConstant.APPLICATION_VISUAL_NAME, VisualApplication.class, args);
}
@Bean
public DynamicDataSourceAnnotationAdvisor dynamicDatasourceAnnotationAdvisor() {
return new DynamicDataSourceAnnotationAdvisor(new DynamicDataSourceAnnotationInterceptor());
}
}
2. 數據源配置, 副數據源就算只有一個, 也要放到數組中( yml 文件 "-" 就表示數組), 不然註冊數據源會報錯, no bound value
#數據源配置
spring:
datasource:
master:
url: jdbc:mysql://localhost:3306/bladex?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: root
druid:
# MySql、PostgreSQL校驗
validation-query: select 1
slave:
- key: slave1
url: jdbc:mysql://localhost:3306/bladex_slave?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: root
druid:
# MySql、PostgreSQL校驗
validation-query: select 1
3. 切換數據源的時候, 括號內的字符串, 是副數據源 的 key ( slave1)
@DataSource("slave1")
@Select(" select * from blade_dept where id = 1123598813738675201")
public List<Map> queryDeptById2();