在 Play 应用程序中启动时调用服务

2024-03-30

我有一个 Play 2.4 应用程序。尝试在应用程序启动时启动每周任务。当前的建议是在急切注入的类的构造函数中执行此操作 (Guice)。但是,我的任务需要访问服务。如何将该服务注入到我的任务中而不出现错误:

Error injecting constructor, java.lang.RuntimeException: There is no started application

?


您需要在 ApplicationStart 类中使用构造函数注入并提供一个 ApplicationModule 来急切地绑定它。

在你的 application.conf 中:

play.modules.enabled += "yourPath.AppModule"

在您的 AppModule 类中:

public class AppModule extends AbstractModule {

    @Override
    protected void configure() {

        Logger.info("Binding application start");
        bind(ApplicationStart.class).asEagerSingleton();

        Logger.info("Binding application stop");
        bind(ApplicationStop.class).asEagerSingleton();

    }
}

在您的 ApplicationStart 类中:

@Singleton
public class ApplicationStart {

    @Inject
    public ApplicationStart(Environment environment, YourInjectedService yourInjectedService) {

        Logger.info("Application has started");
        if (environment.isTest()) {
            // your code
        }
        else if(
           // your code
        }

        // you can use yourInjectedService here

    }
}

如果您需要的话;申请站:

@Singleton
public class ApplicationStop {

    @Inject
    public ApplicationStop(ApplicationLifecycle lifecycle) {

        lifecycle.addStopHook(() -> {
            Logger.info("Application shutdown...");
            return F.Promise.pure(null);
        });

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Play 应用程序中启动时调用服务 的相关文章

  • Play Framework 2 Scala WS 执行同步请求

    我正在学习Scala 我曾经使用 Play Framework 2 Java 并尝试使用和学习 Scala 重写我之前的一些工作 我需要执行同步 WS 请求并从代码中的某处获取结果对象 当我回到 Java 时 我曾经这样做过 WS url
  • 大数据请求体为空

    我在 post 方法的正文中发送大量文本 我使用 Postman 来测试这一点 但是它工作正常 我可以像这样读取请求正文 String text request body asText 但是当我尝试在正文中发送大量数据时 我得到的文本为空
  • Spring - 如何注入具体的接口实现?

    我需要通过 Autowired 注入服务类的具体实现 服务接口 public interface PostService 执行 Service postServiceImpl public class PostServiceImpl imp
  • 在 Play 框架中使用缓存

    我正在尝试实现一个测验应用程序 该应用程序使用 ajax 将问题一一加载 当用户单击 到下一个问题 按钮时 他 她的答案将保存在缓存中 但是当我调试时 缓存列表始终为空 此代码创建第一个缓存数组 public static void vie
  • Play Framework 2.6 CSRF 和会话

    我遇到了奇怪的问题 我正在我的网站上实现购物车功能 并使用会话来存储购物车位置 我有一个 POST 操作来将新位置添加到购物车 并且我启用了 CSRF 过滤器来保护网站 我在产品页面上用ajax调用它 所以第一次调用没问题 但第二次调用说未
  • ::FindWindow 从服务应用程序失败

    从服务应用程序调用时 Windows API FindWindow 函数失败 GetLastError 也返回 0 成功 这是一些特权 访问权问题吗 你认为这是设计问题吗 我应该使用另一种IPC方法吗 leppie 是的 Windows 服
  • 玩框架。无需编译

    我被介绍到 Play 框架 我发现它的令人惊奇的事情之一是不需要编译项目 您只需保存编辑的文件并重新加载网页即可 我听说 Java 源代码被编译为字节码 然后使用 JIT 编译器进行编译 那么 Play 框架内部到底有什么魔力呢 在 DEV
  • 使用 TinyIoC 进行构造函数注入

    我刚刚从 Ninject 更改为 TinyIoC 进行依赖项注入 但在构造函数注入方面遇到了问题 我已设法将其简化为以下片段 public interface IBar public class Foo public Foo IBar ba
  • 如何让@Autowired在普通类中工作?

    这是我所得到的 Component class FooController fun createFoo val foo FooEntity foo name Diogo fooRepository save foo Autowired in
  • 如何以编程方式按名称获取 Angular 服务

    我有一个字符串 其中包含我需要以编程方式注入到我的控制器之一中的服务名称 function Ctrl var serviceName myService var service 我认为做类似的事情应该很容易 function Ctrl in
  • 作为后台进程/服务运行命令

    我有一个 Shell 命令 我想在后台运行 并且我读到这可以通过添加后缀来完成 到导致它作为后台进程运行的命令 但我需要一些更多的功能 并且想知道如何去做 我希望每次系统重新启动时该命令都在后台启动并运行 我希望能够像人们一样在需要时启动和
  • 龙目岛和吉斯注射液

    我是 lombok 和 guice 注入的新手 我可以了解一般概念 但我遇到了一些我不理解的代码 并且由于语法而无法搜索 以下是代码 有人可以帮助我理解吗 import com google inject Inject import lom
  • Dagger 2:何时使用构造函数注入,何时使用字段注入?

    我有点懒 过去几乎完全使用现场注入 我只是提供空的构造函数 放入我的 Inject 字段 我的一切看起来都很好很简单 然而 字段注入有其权衡 因此我设计了一些简单的规则来帮助我决定何时使用字段以及何时使用构造函数注入 如果我的逻辑有错误或者
  • 使用MongoDB时需要JPA吗?

    我对这两者很困惑 我正在看戏 java框架 它说它使用JPA 我正在考虑使用 Play 第一次在项目中使用 MongoDB 我以前使用过JPA 但当时我用它来写入关系数据库 mysql MongoDB 不是关系数据库 所以如果我想将它与 P
  • 使用 JsonView 将 POJO 转换为 JsonNode

    我正在编写一个典型的 Play Framework 应用程序 我想使用 Jackson 从控制器的方法返回 JsonNode 这就是我现在正在做的 public static Result foo MyPojoType myPojo new
  • 使用简单注入器进行方法级属性拦截

    借助 Unity 我能够快速添加基于属性的拦截 如下所示 public sealed class MyCacheAttribute HandlerAttribute ICallHandler public override ICallHan
  • 为什么我的 akka 日志记录不能在游戏中运行

    我的日志记录在我的播放代码中工作正常 但我的 akka 代码没有记录到文件 标准输出 class EmailActor extends Actor with ActorLogging import EmailActor log info e
  • Spring部署期间依赖注入问题

    我正在启动一个 Primefaces Spring Hibernate 项目 并且仍在学习如何正确处理这些组件 但就在此时 我面临着一个与 spring 依赖注入相关的问题 这让我很害怕 我已经在网上寻找答案两天了 但找不到我的代码有什么问
  • Android 2.3 中崩溃服务重启后不会调用 onStartCommand()

    我遇到了 Android 服务重启的问题 我正在针对 API 版本 7 进行构建 并在 Android 2 3 3 的设备上运行 问题是 当我的服务被系统杀死并稍后重新启动时 只有onCreate 我的服务被称为 代码在onStartCom
  • Intellij IDEA 无法使用 Play 框架解析符号

    我正在使用 IDEA 13 和 Play 2 2 1 并且正在做示例游玩地点 http www playframework com documentation 2 2 x JavaTodoList public static Result

随机推荐

  • 当 btoa 被弃用时,如何在 ReactJS 中编码 Base 64 字符串?

    我正在使用一个 API 它要求我授权我的客户端 ID 和客户端密钥 我尝试使用 btoa 方法 但它说它已被弃用 这是我到目前为止所尝试过的 授权 基本 btoa ClientID ClientSecret 这似乎给出了相同的结果btoa
  • 如何使用 javascript 或 jQuery 处理多个 HTML 中的通用代码

    我有一个应用程序 其中有近 30 个 html 它们共享一些通用代码 如果我对其进行任何更改 我需要在每个页面上更改它 下面是我在所有页面上使用的代码片段 div ul li class current a href html a li l
  • 使用activestorage的直接上传上传到S3时如何指定前缀?

    使用标准 S3 配置 AWS ACCESS KEY ID AWS ID AWS BUCKET bucket name AWS REGION region AWS SECRET ACCESS KEY secret 我可以使用以下 Rails
  • 如何编写在现代 x64 处理器上高效运行的自修改代码?

    我正在尝试加速可变位宽整数压缩方案 并且我对动态生成和执行汇编代码感兴趣 目前 大量时间花费在错误预测的间接分支上 并且根据发现的一系列位宽生成代码似乎是避免这种损失的唯一方法 一般技术被称为 子例程线程 或 调用线程 尽管这也有其他定义
  • 我在什么上下文中运行 C#?

    我想知道 当我有这样的代码时 lock obj MyCode MyAgent Can MyAgent包含代码认识到它正在运行lock block 关于什么 for int i 0 i lt 5 i MyCode MyAgent Can My
  • 类抛出异常[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何在 Symfony2 中创建 IP 黑名单?

    是的 我知道有食谱中的选民教程 http symfony com doc 2 0 cookbook security voters html 但我正在寻找稍微不同的东西 我需要两层不同的黑名单 拒绝某些IP访问整个网站 拒绝某些IP登录 我
  • For 循环中的 DispatchGroup

    因此 我花了一些时间尝试让 DispatchGroup 在长时间异步操作完成之前阻止 for 循环迭代 我发现的大多数示例都相当简单明了 但我似乎无法让我的简单测试用例按我的预期工作 let group DispatchGroup for
  • Fabric.js:如何将自定义尺寸设置为 Text 或 IText?

    我正在使用优秀的 Fabric js 在画布上绘制一些文本 当我为 IText 对象指定自定义大小 假设为 200x200 矩形 时 Farbric js 似乎强制对象的宽度和高度适合文本 var t new fabric IText He
  • 无法使用 Web Video Kit API 将视频发布到 Tiktok

    我正在尝试使用此端点将视频上传到 Tiktok https open api tiktok com share video upload https open api tiktok com share video upload 按照官方文档
  • 将数据放入 EBS 支持的 EC2 实例中

    我创建了一个 AWS EC2 实例并向其附加了一个 EBS 卷 我已经在上面安装了 LAMP 堆栈和 phpmyadmin 我还可以使用 Cyber duck 使用公钥 私钥 初始化与其的 SFTP 连接 并将一些 html php 文件上
  • CMAKE:更新函数中的列表不起作用

    我跟着this https stackoverflow com questions 22487215 cmake function parameter and return and this https stackoverflow com
  • 在 javascript 中使用正则表达式无效组错误

    我有以下正则表达式来检查多种类型的电子邮件地址输入 W
  • Windows 8 下的 WPF 和 Silverlight 的未来会怎样?

    看到首次发布 HTML5 JS Windows 8 GUI http windows8news com 2011 06 02 microsoft unveil windows 8 tablet ui 大量的WPF 和 Silverlight
  • 如何在 pycaffe 中获取图层类型?

    是否有可能在 pycaffe 中获取每一层的类型 例如 卷积 数据等 我搜索了提供的示例 但找不到任何内容 目前我正在使用图层名称来完成我的工作 这是非常糟糕和有限的 这很容易 import caffe net caffe Net path
  • 使用curl PHP获取gzip压缩的XML文件时出现问题

    我正在尝试使用curl 从 xml gz 文件中获取数据 我可以下载该文件 但我的任何尝试都无法获取可用的 XML 当我尝试打印 XML 时 我收到一长串乱码特殊字符 例如 r 7 E i 5 6 DL u 有没有一种简单的方法来解压缩和编
  • Ruby 模除法

    所以我用一个模块编写了一个在 Ruby 中进行模除法的程序 module Moddiv def Moddiv testfor op1 op2 return op1 op2 end end Program require mdivmod pr
  • 让 UIButton 充当导航控制器

    如何使常规 UIButton 充当导航控制器 以便按下它时我可以打开一个新视图 按照以下方式在 viewDidLoad 方法中创建 yourButton UIButton yourButton UIButton buttonWithType
  • bitbucket-pipelines.yml 文件中的部署环境“暂存”在管道中多次出现

    我正在尝试让 Bitbucket Pipelines 执行定义部署区域的多个步骤 当我这样做时 我收到错误 配置错误您的部署环境 暂存 bitbucket pipelines yml 文件在管道中出现多次 请参阅我们的文档以了解有效的环境及
  • 在 Play 应用程序中启动时调用服务

    我有一个 Play 2 4 应用程序 尝试在应用程序启动时启动每周任务 当前的建议是在急切注入的类的构造函数中执行此操作 Guice 但是 我的任务需要访问服务 如何将该服务注入到我的任务中而不出现错误 Error injecting co