介绍:
用户在管理平台录入文件传输关系,通过审批后再将文件传输关系同步到各个测试环境的数据库中(各环境使用这些数据在这里不表)。
科普小知识:正规的项目验收流程至少会有经过下几个环境,DEV(开发调试环境),SIT(集成测试环境),UAT(用户验收环境),TRL(准生产环境),按顺序测试通过后就可以上线投产使用了。
管理平台使用的数据库名为 duopai
公共数据使用的数据库名为 duopai_comm
DEV环境使用的数据库名为 duopai_dev
SIT环境使用的数据库名为 duopai_sit
UAT环境使用的数据库名为 duopai_uat
在管理平台录入的数据会保存在duopai数据库中,用户在查询页面选择一条文件传输关系并点击同步到DEV环境时,后台需要根据前端传递的文件传输关系ID和环境值,将该条数据同步到DEV环境的数据库duopai_dev,并更新管理台数据库duopai中该条文件传输关系的DEV部署时间,其它环境同步过程与同步DEV环境一样。
思路:
SpringBoot版本号:2.4.3
MyBatis版本号:3.4.6
MySql版本号:8.0.21
Druid版本号:1.2.3
Atomkios版本号:2.4.3
使用Druid数据库连接池管理多个数据源,根据需要部署的环境动态切换数据源,同时保证数据的一致性(同步的方法是插入duopai_dev数据库,然后更新duopai数据库,如果插入duopai_dev成功,更新duopai失败,要保证插入duopai_dev的数据回滚,即要成功一起成功,要失败一起失败)。
实现:
一、application.yml文件内容。
spring:
datasource:
jdbc:
driverClassName: com.mysql.cj.jdbc.Driver
initialSize: 15
minIdle: 15
maxActive: 100
maxWait: 60000
testOnBorrow: true
validationQuery: SELECT 1 FROM DUAL
# 管理台数据库连接配置
gov:
url: jdbc:mysql://101.132.118.159:3306/duopai?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: duopai
password: duopai123
comm:
url: jdbc:mysql://101.132.118.159:3306/duopai_comm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: duopai
password: duopai123
# 业务数据库
biz:
# DEV环境数据库连接配置
dev:
url: jdbc:mysql://101.132.118.159:3306/duopai_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: duopai
password: duopai123
# SIT环境数据库连接配置
sit:
url: jdbc:mysql://101.132.118.159:3306/duopai_sit?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: duopai
password: duopai123
# UAT环境数据库连接配置
uat:
url: jdbc:mysql://101.132.118.159:3306/duopai_uat?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: duopai
password: duopai123
mybatis:
mapperLocations: classpath:/com/example/demo/mapper/*.xml
# 日志配置
二、Pom.xml文件内容。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springboot-demo-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- atomikos -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
<!-- m