签入版本

This commit is contained in:
2026-09-10 21:41:50 +08:00
commit 717116a605
2693 changed files with 355025 additions and 0 deletions
@@ -0,0 +1,164 @@
package com.xiaomayi.datasource.enums;
import lombok.Getter;
/**
* 数据源类型枚举
* <p>
* 功能:定义系统中所有可用的数据源类型,提供统一的数据源标识管理
* <p>
* 设计优势:
* - 类型安全:使用枚举避免字符串硬编码
* - 易于维护:所有数据源类型集中管理
* - 可扩展性:添加新数据源只需新增枚举值
* - 自文档化:枚举名称和描述说明数据源用途
* <p>
* 使用场景:
* - 在@DataSource注解中指定数据源类型
* - 在数据源映射中作为key
* - 在日志和监控中标识数据源
*/
@Getter
public enum DataSourceType {
/**
* 主库 - 用于写操作和重要读操作
* <p>
* 典型用途:
* - 数据插入、更新、删除操作
* - 事务性操作
* - 关键业务查询
*/
MASTER("master", "主库"),
/**
* 从库1 - 用于读操作,分担主库压力
* <p>
* 典型用途:
* - 报表查询
* - 数据分析
* - 非关键业务查询
*/
SLAVE1("slave1", "从库1"),
/**
* 从库2 - 用于读操作,提供数据冗余和负载均衡
* <p>
* 典型用途:
* - 备份查询
* - 只读业务
* - 大数据分析
*/
SLAVE2("slave2", "从库2"),
/**
* PostgreSQL数据库 - 用于特定的PostgreSQL数据操作
* <p>
* 典型用途:
* - GIS地理信息数据
* - JSON文档存储
* - 复杂查询场景
*/
POSTGRESQL("postgres", "PostgreSQL数据库"),
/**
* SQL Server数据库 - 用于特定的SQL Server数据操作
* <p>
* 典型用途:
* - Windows环境集成
* - .NET系统集成
* - 企业级应用
*/
SQLSERVER("sqlserver", "SQL Server数据库"),
/**
* DEMO数据库 - 用于特定的演示数据操作
*/
DEMO("demo", "演示数据库");
/**
* 数据源标识
* 对应配置文件中数据源的key,用于从配置中读取对应数据源的属性
* -- GETTER --
* 获取数据源标识
*
* @return String 数据源标识,用于配置映射和日志记录
*/
private final String value;
/**
* 数据源描述
* 用于日志输出、监控显示和文档说明
* -- GETTER --
* 获取数据源描述
*
* @return String 数据源描述,用于显示和文档
*/
private final String description;
/**
* 枚举构造函数
* <p>
* 设计为私有构造函数,确保枚举实例的不可变性和线程安全性
*
* @param value 数据源标识,必须与配置文件中的key一致
* @param description 数据源描述,用于说明数据源的用途
*/
DataSourceType(String value, String description) {
this.value = value;
this.description = description;
}
/**
* 通过标识获取枚举实例
* <p>
* 功能:将字符串标识转换为对应的枚举实例
* <p>
* 使用场景:
* - 从配置文件中读取数据源类型时
* - 动态确定数据源类型时
* - 反序列化数据源类型时
*
* @param value 数据源标识字符串
* @return DataSourceType 对应的枚举实例
* @throws IllegalArgumentException 如果标识不存在于枚举值中
*/
public static DataSourceType fromValue(String value) {
// 遍历所有枚举值,查找匹配的标识
for (DataSourceType type : DataSourceType.values()) {
if (type.getValue().equals(value)) {
return type;
}
}
// 如果没有找到匹配的枚举值,抛出明确的异常信息
throw new IllegalArgumentException("未知的数据源类型: " + value + ",可用类型: " + getAvailableTypes());
}
/**
* 获取所有可用的数据源类型
* <p>
* 功能:提供所有数据源类型的字符串表示,用于错误信息和日志
*
* @return String 所有数据源类型的逗号分隔列表
*/
private static String getAvailableTypes() {
StringBuilder sb = new StringBuilder();
for (DataSourceType type : DataSourceType.values()) {
if (sb.length() > 0) {
sb.append(", ");
}
sb.append(type.getValue());
}
return sb.toString();
}
/**
* 重写toString方法,提供更有意义的输出
*
* @return String 枚举的字符串表示,包含标识和描述
*/
@Override
public String toString() {
return String.format("%s(%s)", value, description);
}
}