Class YmlProviderFactory

java.lang.Object
cloud.opencode.base.yml.spi.YmlProviderFactory

public final class YmlProviderFactory extends Object
YAML Provider Factory - Factory for loading YAML providers via SPI YAML 提供者工厂 - 通过 SPI 加载 YAML 提供者的工厂

This factory uses Java ServiceLoader to discover and load YAML providers.

此工厂使用 Java ServiceLoader 来发现和加载 YAML 提供者。

Features | 主要功能:

  • Auto-discovery of YAML providers via Java ServiceLoader - 通过 Java ServiceLoader 自动发现 YAML 提供者
  • Priority-based provider selection - 基于优先级的提供者选择
  • Named provider lookup - 命名提供者查找
  • Default provider override support - 默认提供者覆盖支持

Usage Examples | 使用示例:

// Get default provider (highest priority)
YmlProvider provider = YmlProviderFactory.getProvider();

// Get provider by name
YmlProvider snake = YmlProviderFactory.getProvider("snakeyaml");

// List all available providers
List<YmlProvider> all = YmlProviderFactory.getAvailableProviders();

Security | 安全性:

  • Thread-safe: Yes (uses volatile + double-checked locking) - 线程安全: 是(使用 volatile + 双重检查锁定)
  • Null-safe: No (throws if no provider found) - 空值安全: 否(无提供者时抛出异常)
Since:
JDK 25, opencode-base-yml V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • getProvider

      public static YmlProvider getProvider()
      Gets the default YAML provider. 获取默认 YAML 提供者。

      The provider is selected by priority (highest first), then by availability.

      提供者按优先级选择(最高优先),然后按可用性选择。

      Returns:
      the default provider | 默认提供者
      Throws:
      OpenYmlException - if no provider is available | 如果没有可用的提供者
    • getProvider

      public static YmlProvider getProvider(String name)
      Gets a provider by name. 按名称获取提供者。
      Parameters:
      name - the provider name | 提供者名称
      Returns:
      the provider | 提供者
      Throws:
      OpenYmlException - if provider is not found | 如果未找到提供者
    • getAvailableProviders

      public static List<YmlProvider> getAvailableProviders()
      Gets all available providers. 获取所有可用的提供者。
      Returns:
      list of providers sorted by priority | 按优先级排序的提供者列表
    • setDefaultProvider

      public static void setDefaultProvider(YmlProvider provider)
      Sets the default provider. 设置默认提供者。
      Parameters:
      provider - the provider to set as default | 要设置为默认的提供者
    • reset

      public static void reset()
      Resets the default provider (forces re-discovery). 重置默认提供者(强制重新发现)。
    • hasProvider

      public static boolean hasProvider()
      Checks if any provider is available. 检查是否有可用的提供者。
      Returns:
      true if at least one provider is available | 如果至少有一个提供者可用则返回 true