pup*_*eno 7 spring pubnub spring-boot
我正在Spring Boot应用程序中连接到PubNub.从文档中,可以重用PubNub对象,但每个线程最好有一个.在Spring Boot中每个线程存储和检索一个对象的适当方法是什么?
这是你在Spring中为每个线程存储和检索一个对象的方法ThreadLocal,这个例子基于Spring自己的ThreadLocalSecurityContextHolderStrategy,用于存储SecurityContext每个线程.
另外,看一下InheritableThreadLocal,特别是如果你的代码旋转了新的线程,例如Spring的@Async注释,它有机制在创建子线程时传播现有的或创建新的线程局部值.
import org.springframework.util.Assert;
final class ThreadLocalPubNubHolder {
private static final ThreadLocal<PubNub> contextHolder = new ThreadLocal<PubNub>();
public void clearContext() {
contextHolder.remove();
}
public PubNub getContext() {
PubNub ctx = contextHolder.get();
if (ctx == null) {
ctx = createEmptyContext();
contextHolder.set(ctx);
}
return ctx;
}
public void setContext(PubNub context) {
Assert.notNull(context, "Only non-null PubNub instances are permitted");
contextHolder.set(context);
}
public PubNub createEmptyContext() {
// TODO - insert code for creating a new PubNub object here
return new PubNubImpl();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |