Solon v3.7.3

solon-java25 [预览]

</> markdown
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();
}