
# SpringBoot项目接入MAS-DB-SDK
1. 引入MAS-DB-SDK组件坐标，下面version版本为最新版本，依赖组件版本参考[如何选择组件版本](https://support.huaweicloud.com/devg-mas/mas-devg-0083.html)。
   
   ```
   <dependency>
       <groupId>com.huaweicloud.devspore</groupId>
       <artifactId>spring-cloud-starter-huawei-devspore-datasource</artifactId>
       <version>1.2.1-RELEASE</version>
   </dependency>
   ```
   
   
2. 根据本项目配置项选其中一个数据连接池坐标。 
   ```
   <dependency>
       <groupId>com.zaxxer</groupId>
       <artifactId>HikariCP</artifactId>
       <version>4.0.3</version>
   </dependency>
   <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-dbcp2</artifactId>
       <version>2.8.0</version>
   </dependency>
   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>1.2.6</version>
   </dependency>
   ```
   
   
3. 项目配置文件application.yaml或者application.properties中加入MAS-DB-SDK配置项。 
   ![](https://support.huaweicloud.com/devg-mas/public_sys-resources/notice_3.0-zh-cn.png)
   - 下文中配置项的格式为yaml文件，如果配置文件为properties格式，需自行修改格式。
   
   - MAS-DB-SDK配置项分为4部分：props配置、etcd配置、sources数据源配置、router路由配置。
   
   - 如果使用MAS服务，props配置、etcd配置则必须要配置，sources数据源配置需要与MAS服务中连接池中的命名一致。如果不对接MAS服务，props配置、etcd配置无需配置，sources数据源配置本地所用数据库即可。
   
   - 下列场景中的配置都包含了props、etcd的配置，配置项的具体值含义参考[配置项详细信息列表](https://support.huaweicloud.com/devg-mas/mas-devg-0079.html)。
    
   - MAS-DB-SDK配置示例，这里的配置只作为一个格式的展示，具体场景的具体配置参考章节[配置说明](https://support.huaweicloud.com/devg-mas/mas-devg-0078.html)。
     ```
     devspore:
        datasource:
             props:
               version: v1
               appId: xxx
               monitorId: xxx
               databaseName: xxx
               decipherClassName: xxx.xxx.xxx
               region: az0
             etcd:
               address: 127.0.0.2:2379,127.0.0.2:2379,127.0.0.2:2379
               apiVersion: v3
               username: etcduser
               password: etcdpwd
               httpsEnable: false
             sources:
               ds1:
                 driverClassName: com.mysql.jdbc.Driver
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
               ds1-slave0:
                 driverClassName: com.mysql.jdbc.Driver 
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave0
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
               ds1-slave1:
                 driverClassName: com.mysql.jdbc.Driver 
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave1
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
               ds2:
                 driverClassName: com.mysql.jdbc.Driver
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
               ds2-slave0:
                 driverClassName: com.mysql.jdbc.Driver
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave0
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
               ds2-slave1:
                 driverClassName: com.mysql.jdbc.Driver
                 jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave1
                 username: datasourceuser
                 password: datasourcepwd
                 type: com.zaxxer.hikari.HikariDataSource
                 props:
                   connectionTimeout: 30000
                   maximumPoolSize: 200
             router:
               active: dc1
               routeAlgorithm: single-read-write 
               nodes:
                 dc1:  
                   master: ds1
                   loadBalance: ROUND_ROBIN
                   slaves:
                     - ds1-slave0
                     - ds1-slave1
                 dc2:  
                   master: ds1
                   loadBalance: ROUND_ROBIN
                   slaves:
                     - ds2-slave0
                     - ds2-slave1
     ```
     
   
   
   
   
4. 使用MAS-DB-SDK提供注解在类级别、方法级别指定数据源。
   
   ![](https://support.huaweicloud.com/devg-mas/public_sys-resources/note_3.0-zh-cn.png)
   - 此步骤为可选步骤，如果在本项目中使用不到，忽略此步骤即可。
   
   - 如果不指定数据源，默认使用application.yaml、application.properties中router下配置的active节点。
    
   - 类级别指定数据源示例： 见[1.4.3 强制路由](https://support.huaweicloud.com/devg-mas/mas-devg-0108.html)
     ![](https://support.huaweicloud.com/devg-mas/zh-cn_image_0000001280661413.png)
     
   
   - 方法级别指定数据源示例： 见[1.4.3 强制路由](https://support.huaweicloud.com/devg-mas/mas-devg-0108.html)
     
   
   
   
   
 
