Play-Framework 2.4:使用 Spring 依赖注入与 Play-Framework 代替 Guice

2023-12-12

我在用Spring-Depedency注射代替Play-Framework Guice依赖注入,由于你的要求,我们需要使用大部分Spring-Modules在我们的应用程序中,例如Spring-Data-Mongodb但问题是,我们的依赖项没有正确注入到控制器中,如下所示:

我的配置:

@Configuration
@ComponentScan(basePackages={"service", "controllers"})
@EnableMongoRepositories(basePackages="repository")
public class SpringDataMongoConfiguration extends AbstractMongoConfiguration{

private play.Configuration configuration = play.Configuration.root();

private MongoClientOptions mongoClientOptions(){
    Builder builder = new Builder();
    builder.connectionsPerHost(configuration.getInt("connections-per-host"));
    builder.connectTimeout(configuration.getInt("connections-timeout"));
    builder.maxConnectionIdleTime(configuration.getInt("max-connections-idle-time"));
    builder.maxConnectionLifeTime(configuration.getInt("max-connections-life-time"));
    builder.minConnectionsPerHost(configuration.getInt("max-connections-per-host"));
    builder.socketKeepAlive(configuration.getBoolean("socket-keep-live"));
    builder.socketTimeout(configuration.getInt("socket-timeout"));
    return builder.build();
}

private ServerAddress serverAddress(){
    ServerAddress serverAddress = new ServerAddress(new InetSocketAddress(configuration.getString("mongodb.uri"), configuration.getInt("mongodb.port")));
    return serverAddress;
}

@Override
protected String getDatabaseName() {
    return configuration.getString("mongodb.dbname");
}

@Override
public Mongo mongo() throws Exception {
    return new MongoClient(serverAddress(), mongoClientOptions());
}

@Override
protected String getMappingBasePackage() {
    return configuration.getString("package.scan");
}}

My built.sbt依赖项:

libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"org.springframework" % "spring-context" % "4.1.6.RELEASE",
"org.springframework.data" % "spring-data-mongodb" % "1.7.2.RELEASE")

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
// routesGenerator := InjectedRoutesGenerator


fork in run := true

In built.sbt,我正在评论routesGenerator := InjectedRoutesGenerator停止Play Guice Dependency Injection.

我的路线文件:

# Home page
GET     /                           @controllers.Application.index()

当我运行该应用程序时,出现以下错误:

- play.api.libs.concurrent.ActorSystemProvider - Starting application    default Akka system: application
- play.api.Play - Application started (Dev)
********************************** userService : null
- application - 
! @6nbpln6jk - Internal server error, for (GET) [/] ->

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]]

根据这个错误,Spring@Autowire注释无法正常工作。但我不明白原因,当春天@Autowire没工作?我该如何解决这个问题?


这个答案不会解决您的问题,但我希望它能指导您如何使用不同的方法来克服您的问题。首先,我使用的是 Play 中集成的 Spring,但是,Spring 目前使用抽象类并处理自己的生命周期。 Play (2.4.*) 使用其默认的 Guice 注入支持。

对于你的问题,经过我的研究,我发现了这些关于在 Play 2.4 中用 Juice 替换/集成 Spring 依赖注入的链接。然而,与 Spring for Play 2.4 的集成尚不存在,只有 James Ropper 完成的原型,如本期所述:

github.com/playframework/playframework/issues/4665

github.com/jroper/play-spring

github.com/spring-projects/spring-guice

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

Play-Framework 2.4:使用 Spring 依赖注入与 Play-Framework 代替 Guice 的相关文章

随机推荐

  • 如何执行.sql文件来创建新表

    phpMyAdmin 配置存储 phpMyAdmin doc html setup html linked tables 说 然后通过导入examples create tables sql来创建新表 这并不明确 我在哪里 导入 该文件 这
  • Intent(getApplicationContext(), class) 和 Intent(class) 有什么区别

    我正在编写代码作为参考 并遇到了这个 Intent 调用 Intent getApplicationContext secondActivity class 我很困惑 因为在我的项目中我只使用 Intent mYSecondActivity
  • 如何改变滚动时的背景颜色?

    我创建了一个固定的导航栏 现在我正在尝试更改导航栏的背景颜色 我创建了一个固定菜单 在页面末尾向下滚动时颜色会发生变化 import React Component from react import Collapse Container
  • .NET core 3.0 和 MS Office 互操作

    我正在尝试使用互操作程序集将最近发布的 NET 核心与 MS Office 结合使用 我有一个最小的项目文件
  • Meteor.call 回调中对 sys.exec 的 Meteor 回调

    我有一个事件触发Metor call Meteor call runCode myCode function err response Session set code response console log response But m
  • 假定大小的数组:冒号与星号 - DIMENSION(:) arr 与 arr(*)

    这两种声明假定大小数组的方法有什么区别吗 e g real dimension arr and real arr 表格 real dimension arr 声明一个假设形状数组 而形式 real arr 声明一个假设大小大批 是的 它们的
  • PHP SQL注入预防无需参数绑定[重复]

    这个问题在这里已经有答案了 可能的重复 PHP中如何防止SQL注入 我正在为我的大学图书馆工作一个视频流网站 我正在使用 PHP 和 MySql 我在这个项目中没有使用任何参数化查询 最近我开始了解SQL注入 现在我的代码已经快完成了 过两
  • 混合实数和位向量

    我有两个使用实数的 SMT2 Lib 脚本 它们在道德上是等效的 唯一的区别是 一个也使用位向量 而另一个则不使用 这是同时使用实数和位向量的版本 uses both reals and bit vectors set option pro
  • intellij 错误地指出没有为自动装配存储库找到类型的 beans

    我创建了一个简单的单元测试 但 IntelliJ 错误地将其突出显示为红色 将其标记为错误 没有豆子吗 正如您在下面看到的那样 它通过了测试吗 那么它一定是自动装配的吗 我在创建时遇到了同样的问题春季启动应用程序使用他们的 SpringBo
  • C#:异步NamedPipeServerStream理解

    我试图找到任何好的 清晰的异步 NamedPipeServerStream 示例 但找不到任何适合我的示例 我想要 NamedPipe 服务器异步接受来自客户端的消息 客户端很简单 对我来说很好 但我找不到服务器的示例 或者无法理解它是如何
  • VBscript 检查特定时间范围内文件是否存在(可以使用通配符)

    大家早上好 我一直在尝试将 VBscript 放在一起 当脚本执行时 它会从用户那里获取文件路径和文件名 其中可能有通配符 然后 该脚本将检查指定目录中是否有与提供的文件名相匹配的文件 然后查看上次修改日期以查看它是否是在特定时间范围内 即
  • http.request 中的 nodeJS 最大标头大小

    使用nodeJS v0 10 28 http请求中标头内容的大小 长度是否有限制 让我解释 我需要使用第三方提供商提供的休息服务 返回给我的数据位于请求的标头中 正文大部分为空 120 个左右字符 标头中的数据量从几个字符到几百kb不等 v
  • 使用 UPDLOCK 的 LinQ To SQL

    有没有办法将 UPDLOCK 与 LinQ To SQL 一起使用 我有一个场景需要它 Thanks Linq2SQL 目前不支持发出 UPDLOCK 更多信息here and here 如果您需要这样做 您可以将自己的 SQL 包装在 S
  • 多个文件上传[重复]

    这个问题在这里已经有答案了 如何在任何位置上传多个文件 我的问题是 我正在选择多个文件 但是当我单击上传按钮时 仅上传最后一个文件并重命名名称 并且重命名名称是所有文件名附加逗号 如下所示 file1 file2 flie3 这是代码 Fi
  • Swift 动态库是否向后兼容较旧的 Swift 版本项目

    我开始从头开始开发 SDK 我不太确定应该用 Swift 还是 Objective C 来编写它 我觉得 Swift 在很多方面都比 Objective C 更好 但我的主要问题是 Swift 动态库是否支持旧版本的 Swift 假设我在
  • jQuery Datatables 大数据集未捕获类型错误:无法读取未定义的属性“mData”

    因此 我在使用 php 从数据库迭代的一大组行上收到控制台错误 我正在用 metronic 主题初始化它 正如你所看到的 我有我的头部和身体 我怀疑这个问题可能与输出的大小有关 可能需要使用另一种方法 任何指导表示赞赏 table clas
  • PyQt 从用户处获取日期

    我在 Qt Designer 中使用按钮和 QDateEdit 构建了简单的小部件 用户将日期输入到 QDateEdit 中 然后当他按下按钮时 日期将被保存到变量中 我该怎么做 你可以简单地做到这一点 var name self date
  • 获取 Android Context 的各种方法有什么区别?

    在我见过的各种 Android 代码中 public class MyActivity extends Activity public void method mContext this since Activity extends Con
  • Android ListView 设置要显示的项目数

    如何设置列表中显示的项目数而不滚动 示例 我有一个包含 10 项的列表 我希望只显示 3 个项目 并且我必须滚动才能看到其余的项目 我认为列表视图中显示的项目数量取决于列表可用的大小 我会尝试限制列表大小的布局 如此详细的布局可能不太容易实
  • Play-Framework 2.4:使用 Spring 依赖注入与 Play-Framework 代替 Guice

    我在用Spring Depedency注射代替Play Framework Guice依赖注入 由于你的要求 我们需要使用大部分Spring Modules在我们的应用程序中 例如Spring Data Mongodb但问题是 我们的依赖项