Java Akka扩展的好处是什么?
我对Akka非常陌生,我试图了解如何处理依赖注入。我遇到了这个问题,这让我想到了Akka扩展,现在我试图理解它与简单的静态方法调用有何不同。关于扩展的Akka教程部分有如下示例:Java Akka扩展的好处是什么?,java,akka,Java,Akka,我对Akka非常陌生,我试图了解如何处理依赖注入。我遇到了这个问题,这让我想到了Akka扩展,现在我试图理解它与简单的静态方法调用有何不同。关于扩展的Akka教程部分有如下示例: public class CountExtensionImpl implements Extension { private final AtomicLong counter = new AtomicLong(0); public long increment() { return
public class CountExtensionImpl implements Extension {
private final AtomicLong counter = new AtomicLong(0);
public long increment() {
return counter.incrementAndGet();
}
}
public class CountExtension extends AbstractExtensionId<CountExtensionImpl> implements ExtensionIdProvider {
public static final CountExtension EXTENSION = new CountExtension();
private CountExtension() {
}
@Override
public CountExtensionImpl createExtension(ExtendedActorSystem system) {
return new CountExtensionImpl();
}
@Override
public ExtensionId<? extends Extension> lookup() {
return EXTENSION;
}
}
public class MyActor extends UntypedActor{
@Override
public void onReceive(Object message) throws Exception {
System.out.println(CountExtension.EXTENSION.get(getContext().system()).increment());
}
}
Akka扩展绑定到ActorSystem,因此是每个系统的单例,而不是全局单例。同意,但它仍然是单例,这在我看来是一种反模式。例如,与依赖注入/事件发布总线相比,扩展有什么好处?您更愿意使用扩展进行交叉关注还是数据库连接管理?对不起,如果我的问题听起来很傻,我可能还没有完全理解Akka Extension的概念。公平地说,它是为“动物饲养”而设计的吗?
public class MyActor extends UntypedActor{
@Override
public void onReceive(Object message) throws Exception {
Counter.increment();
}
}