Scalaオブジェクトにプレイデータベースの依存関係を挿入する方法はありますか?データベースへの依存関係の挿入scalaオブジェクト
class MyClass @Inject() (db: Database) = {
}
などですが、実際にはPlayプラグインを使わずに依存関係を挿入したいと思っています。
マイbuild.sbtはこの
scalaVersion := "2.11.8"
lazy val sparkVersion = "2.1.0"
lazy val hadoopVersion = "2.7.0"
lazy val jacksonVersion = "2.8.7"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.hadoop" % "hadoop-common" % hadoopVersion,
"com.databricks" %% "spark-csv" % "1.5.0",
"org.codehaus.janino" % "janino" % "3.0.7",
"com.databricks" % "spark-redshift_2.11" % "3.0.0-preview1",
"com.amazonaws" % "aws-java-sdk-s3" % "1.11.34",
"com.typesafe" % "config" % "1.3.1",
"com.typesafe.play" % "play-json_2.11" % "2.4.6",
"com.typesafe.play" %% "play" % "2.5.9",
"com.typesafe.play" % "play-jdbc_2.11" % "2.5.14",
"com.amazon.redshift" % "jdbc42" % "1.2.1.1001" from "https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC42-1.2.1.1001.jar"
)
fork in Test := true
assemblyMergeStrategy in assembly := {
case ".gitkeep" => MergeStrategy.discard
case "META-INF/groovy-release-info.properties" => MergeStrategy.discard
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
//case "log4j.properties" => MergeStrategy.deduplicate
case x: String if x.matches("""META-INF/.*\.(SF|DSA|RSA)""") => MergeStrategy.discard
case x: String if x.startsWith("META-INF/services/org.apache.lucene") => MergeStrategy.concat
case x => MergeStrategy.first
}
のように見える私は
object MyObject {
@Inject()
var db: Database = _
}
を試みたが、nullポインタ例外
私の謙虚な経験から、通常、あなたは 'オブジェクト'に状態を保存したくありません。したがって、メソッド呼び出しで渡す以外の方法で、オブジェクトに状態を注入する必要はありません。この方法で初期化の問題はなく、注入された依存関係の振る舞いを変更することに問題はなく、まだテスト可能です。 –