【问题标题】:Spring-Data-Mongodb depedencies not picked by Play-Framework 2.4Play-Framework 2.4 未选择 Spring-Data-Mongodb 依赖项
【发布时间】:2015-11-25 04:06:00
【问题描述】:

我正在使用带有 Spring-Data-Mongodb 的 play-framework 2.4。但是当我编译项目时,编译会抛出一个错误:

[error] /home/james/play-spring-data-mongodb/app/configuration/SpringDataMongoConfiguration.java:10: package org.springframework.data.mongodb.config does not exist
[error] org.springframework.data.mongodb.config.AbstractMongoConfiguration
[error] /home/james/play-spring-data-mongodb/app/configuration/SpringDataMongoConfiguration.java:11: package org.springframework.data.mongodb.repository.config does not exist
[error] org.springframework.data.mongodb.repository.config.EnableMongoRepositories
[error] /home/james/play-spring-data-mongodb/app/configuration/SpringDataMongoConfiguration.java:25: cannot find symbol
[error]   symbol: class AbstractMongoConfiguration
[error] AbstractMongoConfiguration
[error] /home/james/play-spring-data-mongodb/app/configuration/SpringDataMongoConfiguration.java:24: cannot find symbol
[error]   symbol: class EnableMongoRepositories
[error] EnableMongoRepositories

最主要的是,昨天这工作完美。但是今天我在尝试编译项目时遇到了这个错误。我的build.sbt文件如下:

name := """play-mongo-template"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
    javaJdbc,
    cache,
    javaWs,
    "org.springframework" % "spring-context" % "4.1.6.RELEASE",
    "org.springframework.data" % "spring-data-mongodb-parent" % "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

更新

我发现了问题,问题是,我们的play-framework激活器无法下载spring-framework依赖。当我打开 .ivy 文件夹并且没有可用的罐子时。我的系统已连接到 Internet,但仍然玩 sbt 不解决依赖关系。我该如何解决这个问题?

【问题讨论】:

    标签: java spring playframework sbt spring-data-mongodb


    【解决方案1】:

    要使用 Spring Data 中的存储库功能,生命周期必须由 Spring 管理。

    因此在 Play 2.4 / 2.5 中使用它,而不添加 Spring 作为依赖项是一个问题,因为默认生命周期由 Guice 管理。

    我想出了一种方法来创建 Spring bean 并将其生命周期管理转移到 Guice。因此,它们可以由 Guice 而不是 Spring 在项目的任何地方注入。

    对于其他没有Spring特有特性的组件,可以正常创建,其生命周期由Guice管理。

    对于其他 Spring 特定的组件,只能在 Spring 容器中运行,它们也可以注入到项目中,它们的生命周期将由 Guice 管理。

    我修改了 Play 2.5 文档中包含的启动项目来演示它。

    请查看此存储库。
    https://github.com/mohitsinha/play-java-spring-data-mongodb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      相关资源
      最近更新 更多