开放的工具接口
2025年12月24日 下午5:22:37
(Solon 一般不提供对外开放的工具性接口)开放的工具接口主要偏向系统级,可对外提供使用:
| 类 | 说明 |
|---|---|
org.noear.solon.util.ScopeLocal | 作用域变量 |
1、ScopeLocal 使用示例
ScopeLocal 是为:从 java8 的 ThreadLocal 到 java25 的 ScopedValue 兼容过度(或兼容)而设计的接口。 目前提供了 ScopeLocalJdk8(默认) 和 ScopeLocalJdk25 的适配。启用虚拟线程时,ScopeLocalJdk25 更搭配。
public class Demo {
static ScopeLocal<String> LOCAL = ScopeLocal.newInstance();
public void test(){
LOCAL.with("test", ()->{
System.out.println(LOCAL.get());
});
}
}
引入 ScopeLocal(需要形成一个调用域,即一种包住感) 后带来的变化:
- NamiAttachment 旧方式
@Controller
public class Demo {
@NamiClient(url="https://api.github.com")
GitHub gitHub;
@Mapping
public Object test(){
NamiAttachment.put("a", "1");
return gitHub.contributors("OpenSolon", "solon");
}
}
- NamiAttachment 新方式
@Controller
public class Demo {
@NamiClient(url="https://api.github.com")
GitHub gitHub;
@Mapping
public Object test(){
return NamiAttachment.withOrThrow(()->{
NamiAttachment.put("a", "1");
return gitHub.contributors("OpenSolon", "solon");
});
}
}