签入版本
This commit is contained in:
+164
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user