Fork me on GitHub

Lifecycle

Introduction

如果我们在谈论服务,我们还必须谈论优先级启动和关闭. 您希望您的服务有序地启动和停止.

您可以使用Ninja的@Start@Dispose批注来这样做.

Example

该类和方法如下所示:

@Singleton
public class MyService {

    @Start(order = 90)
    public void startService() {
        //do something       
    }

    @Dispose(order = 90)
    public void stopService() {
       //do something
    }

    public Result getCount(Context ctx) {
        return Results.json(count.get());
    }
}    

不要忘记在conf / Module.java中显式绑定该类

public class Module extends AbstractModule {

    protected void configure() {

        bind(MyService.class);

    }
}

这样,Ninja将启动MyService并很好地停止它.

Starting and stopping services in order

它应该开始的顺序,以后更高的意思. 尽管应用程序可以自由使用其希望的任何订购系统,但建议遵循以下约定:

  • 10-连接到资源并且不依赖于其他服务的服务,例如数据库连接
  • 20-80-依赖于资源,但实际上并未启动应用程序执行其核心功能的服务
  • 90-启动应用程序以执行其核心功能的服务,例如,侦听队列,侦听HTTP,启动计划的服务

by  ICOPY.SITE