Java 在CDI装饰器之间共享数据

Java 在CDI装饰器之间共享数据,java,decorator,cdi,Java,Decorator,Cdi,是否有可能在两个CDI装饰器之间共享数据,这两个装饰器将一个接一个地调用 在我的例子中,FirstDecorator调用一个服务并获取一个id。SecondDecorator需要知道这个id才能调用另一个服务。Decorator之间没有内置上下文或类似的内容共享。不一定有 相反,这是你自己做的。每个Decorator都将@注入与您设计的对象相同的对象,可能具有一个setId()方法。即: // In decorator 1: @Inject private IdHolder idHolder;

是否有可能在两个CDI装饰器之间共享数据,这两个装饰器将一个接一个地调用


在我的例子中,FirstDecorator调用一个服务并获取一个id。SecondDecorator需要知道这个id才能调用另一个服务。

Decorator之间没有内置上下文或类似的内容共享。不一定有

相反,这是你自己做的。每个
Decorator
都将
@注入与您设计的对象相同的对象,可能具有一个
setId()
方法。即:

// In decorator 1:
@Inject
private IdHolder idHolder;

// In some method in decorator 1:
this.idHolder.setId(theIdInQuestion);

// In decorator 2:
@Inject
private IdHolder idHolder;

// In some method in decorator 2:
final Object id = this.idHolder.getId();

// The IdHolder class:
@ApplicationScoped // or some other scope that will "stick around" longer than @Dependent
class IdHolder {
  private Object id;
  Object getId() { return this.id; }
  void setId(final Object id) { this.id = id; }
}