solon-java25 [预览]
2025年12月18日 下午2:40:15
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-java25</artifactId>
<version>3.8.0-M3</version>
</dependency>
1、描述
基础扩展插件,为 Solon 提供 Java25 部分特性适配(不方便用反射方式适配的)。v3.8.0 后支持
2、代码应用
public class App {
public static void main(String[] args) {
Solon.start(App.class, args, app->{
//替换 ScopeLocal 接口的实现(基于 java25 的 ScopedValue 封装)
app.factories().scopeLocalFactory(ScopeLocalJdk25::new);
});
}
}
3、ScopeLocal 接口参考
ScopeLocal 是为:从 java8 的 ThreadLocal 到 java25 的 ScopedValue 兼容过度(或兼容)而设计的接口
public interface ScopeLocal<T> {
static <T> ScopeLocal<T> newInstance() {
return newInstance(ScopeLocal.class);
}
static <T> ScopeLocal<T> newInstance(Class<?> applyFor) {
return FactoryManager.getGlobal().newScopeLocal(applyFor);
}
/// //////////////////////////
/**
* 获取
*/
T get();
/**
* 使用值并运行
*/
void with(T value, Runnable runnable);
/**
* 使用值并调用
*/
<R> R with(T value, Supplier<R> callable);
/**
* 使用值并运行
*/
<X extends Throwable> void withOrThrow(T value, RunnableTx<X> runnable) throws X;
/**
* 使用值并调用
*/
<R, X extends Throwable> R withOrThrow(T value, CallableTx<? extends R, X> callable) throws X;
/// ////////////////////////////
/**
* @deprecated 3.8.0
*/
@Deprecated
ScopeLocal<T> set(T value);
/**
* @deprecated 3.8.0
*/
@Deprecated
void remove();
}