Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Akka扩展的好处是什么?_Java_Akka - Fatal编程技术网

Java 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

我对Akka非常陌生,我试图了解如何处理依赖注入。我遇到了这个问题,这让我想到了Akka扩展,现在我试图理解它与简单的静态方法调用有何不同。关于扩展的Akka教程部分有如下示例:

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();

    }
}