2017-09-18 2 views
0

Deadbolt를 Play + Scala 응용 프로그램 (2.5x)에서 사용하려고합니다. 내 build.sbt에 다음과 같이 추가 된 (재생 2.5 배) :Deadbolt를 사용할 때 오류가 발생합니다.

libraryDependencies += "be.objectify" %% "deadbolt-scala" % "2.5.1" 

그리고 내 conf의/application.conf에 : 나는 서버에 액세스 할 때, 나는 즉시 "SBT 실행"후

enabled += "be.objectify.deadbolt.scala.DeadboltModule" 

이 오류가 발생합니다 :

play.api.UnexpectedException: Unexpected exception[CreationException: Unable to create injector, see the following errors: 

1) No implementation for be.objectify.deadbolt.scala.cache.HandlerCache was bound. 
    while locating be.objectify.deadbolt.scala.cache.HandlerCache 
    for parameter 1 at be.objectify.deadbolt.scala.ActionBuilders.<init>(ActionBuilders.scala:30) 
    at be.objectify.deadbolt.scala.DeadboltModule.bindings(DeadboltModule.scala:32): 
Binding(class be.objectify.deadbolt.scala.ActionBuilders to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 

2) No implementation for be.objectify.deadbolt.scala.cache.HandlerCache was bound. 
    while locating be.objectify.deadbolt.scala.cache.HandlerCache 
    for parameter 1 at be.objectify.deadbolt.scala.DeadboltActions.<init>(DeadboltActions.scala:34) 
    at be.objectify.deadbolt.scala.DeadboltModule.bindings(DeadboltModule.scala:30): 
Binding(class be.objectify.deadbolt.scala.DeadboltActions to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 

2 errors] 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:180) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:131) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:131) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:129) 
    at scala.util.Success.flatMap(Try.scala:231) 

내가 작성한 다른 코드 변경 사항은 없습니다. Deadbolt를 사용하기위한 코드를 아직 작성하지 않았는데도 왜 실패해야합니까?

답변

1

특정 인터페이스가 구현되어 있고 DI에 바인딩되어 있어야하기 때문에 작동하지 않습니다. 따라서 의존성을 떨어 뜨릴 수없고 작동 할 것으로 기대할 수 없습니다.

당신은 적어도 DI 바인드해야합니다

TemplateFailureListener HandlerCache DeadboltExecutionContextProvider

동작하는 예제는 https://github.com/schaloner/deadbolt-2-scala-examples

+0

감사에서 확인할 수있다. 그것을 추가 할 것입니다. – NKM

+0

작동하는 경우 : 답변으로 표시하십시오. –

+0

감사합니다. 위와 같이 작동합니다. – NKM

관련 문제