I think it should be along the line (without packaging and import) ...
OnStartModule.java:
public class OnStartModule extends AbstractModule { @Override protected void configure() { bind(BackgroundTasks.class).asEagerSingleton(); } }
BackgroundTasks.java:
@Singleton public class BackgroundTasks { @Inject public BackgroundTasks(ApplicationLifecycle lifecycle) { lifecycle.addStopHook(() -> { Logger.info("Stopping background tasks"); this.shutdown(); Logger.info("Saving modules data"); for(Module m: controllers.Application.modules){ m.saveData(); } return F.Promise.pure(null); }); } }
application.conf:
play.modules.enabled += "OnStartModule"
source share