Java Guice中重叠的作用域?

Java Guice中重叠的作用域?,java,guice,minecraft,bukkit,spongeapi,Java,Guice,Minecraft,Bukkit,Spongeapi,Guice的概念是,通常用于web服务器请求 作用域是否可以在长寿命对象中使用,与运行的代码相比,长寿命对象的生命周期可能是异步的 例如,海绵和Bukkit都提供在加载/卸载世界时触发的事件 然后勾选这些世界,并抛出各种事件 是否值得使用作用域和作用域注释,以便在加载和卸载世界时,使用带有参数的注释来注入/初始化特定于服务/世界的侦听器 public abstract class WorldService { World world; public WorldService(W

Guice的概念是,通常用于web服务器请求

作用域是否可以在长寿命对象中使用,与运行的代码相比,长寿命对象的生命周期可能是异步的

例如,海绵和Bukkit都提供在加载/卸载世界时触发的事件

然后勾选这些世界,并抛出各种事件

是否值得使用作用域和作用域注释,以便在加载和卸载世界时,使用带有参数的注释来注入/初始化特定于服务/世界的侦听器

public abstract class WorldService {
    World world;

    public WorldService(World world) {
        this.world = world;
    }

    abstract void tick();
    abstract void start();
    abstract void stop();

    public static class TimeTracker extends WorldService {
        private final Logger logger;
        private int count;

        @Inject
        public TimeTracker(World world, Logger logger) {
            super(world);
            this.logger = logger;
        }

        @Override
        void tick() {
            count++;
        }

        @Override
        void start() {
            count = 0;
        }

        @Override
        void stop() {
            logger.debug("World loaded for "+count+" ticks");
        }
    }
}
提供一个允许定义自己作用域的库

如果您在可重入作用域中,并将Runnable分派给 ExecutorService通过此方法包装,当前作用域内容 将在可运行运行运行之前冻结并重新配置-因此 与您提交时的范围内容相同 可运行的

这样就有可能获得范围界定的所有好处,以及 具有复杂的线程模型

因此,您不仅可以使用此库拥有自定义作用域,而且还可以通过调度任务成功地传递对象,可能与


这允许一些非常整洁的代码。

对于底层选民和亲密选民,我希望有人评论我未能传达的内容。
是否值得使用Scopes?
是一个非常“主要基于意见”的问题。至于沟通不好(“不清楚你在问什么”),这可能与人们不了解范围以及为什么它与这里相关有关有关有关。像这样的问题通常可以用“不,你疯了,甚至认为它们可能适用于这个领域”来回答,“太广泛”的意思是,“是的,但有很多方法可以做到”然而,人们仍然对这个问题持怀疑态度。