修复AI SPI classloader找不到实现问题(issue#4241@Github)

This commit is contained in:
Looly
2026-04-07 10:24:34 +08:00
parent 3bbbf2a1aa
commit 2441c92ada
3 changed files with 6 additions and 9 deletions

View File

@@ -1,12 +1,13 @@
# 🚀Changelog
-------------------------------------------------------------------------------------------------------------
# 5.8.45(2026-03-20)
# 5.8.45(2026-04-07)
### 🐣新特性
* 【core 】 `AnnotationUtil`新增两级缓存架构提升高频注解解析性能pr#1434@Gitee
### 🐞Bug修复
* 【db 】 修复`Page``PageResult`首页调用问题issue#IH7A18@Gitee
* 【ai 】 修复AI SPI classloader找不到实现问题issue#4241@Github
-------------------------------------------------------------------------------------------------------------
# 5.8.44(2026-03-11)

View File

@@ -22,7 +22,6 @@ import cn.hutool.ai.core.AIServiceProvider;
import cn.hutool.core.util.ServiceLoaderUtil;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -37,9 +36,8 @@ public class AIServiceFactory {
// 加载所有 AIModelProvider 实现类
static {
final ServiceLoader<AIServiceProvider> loader = ServiceLoaderUtil.load(AIServiceProvider.class);
for (final AIServiceProvider provider : loader) {
providers.put(provider.getServiceName().toLowerCase(), provider);
for (final AIServiceProvider provider : ServiceLoaderUtil.load(AIServiceProvider.class, AIServiceProvider.class.getClassLoader())) {
providers.putIfAbsent(provider.getServiceName().toLowerCase(), provider);
}
}

View File

@@ -19,7 +19,6 @@ package cn.hutool.ai.core;
import cn.hutool.core.util.ServiceLoaderUtil;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -34,9 +33,8 @@ public class AIConfigRegistry {
// 加载所有 AIConfig 实现类
static {
final ServiceLoader<AIConfig> loader = ServiceLoaderUtil.load(AIConfig.class);
for (final AIConfig config : loader) {
configClasses.put(config.getModelName().toLowerCase(), config.getClass());
for (final AIConfig config : ServiceLoaderUtil.load(AIConfig.class, AIConfig.class.getClassLoader())) {
configClasses.putIfAbsent(config.getModelName().toLowerCase(), config.getClass());
}
}