2014-10-07 7 views
0

실루엣 구현 예제에서 here이 발견되면 줄에 사용 된 암시 적 'env'값 (환경 [User, CachedCookieAuthenticator] 유형)은 어떻게됩니까? 28 of /app/controllers/SignUpController.scala 예를 들어, Guice를 사용하여 정의 되었습니까?예제 play-silhouette 템플릿의 암시 적 환경 값 정의 (Guice 사용)

app/utils/di/SilhouetteModule.scala의 provideEnvironment가 app/Global 24 행에 작성된 "injector"를 통해 SignUpController에 Silhouette Environment를 "주입"하는 데 어떻게 사용되는지 이해하지 못하겠습니까? .scala. play-silhouette-slick-seed 예제에서 어디에서든지 provideEnvironment가 사용되는 것을 볼 수 없으므로 인수 (예 : userService, authenticatorService 등)에 어떤 값이 제공되는지 파악할 수 없습니다.

답변

2

실루엣 모듈의이 예제는 scala Dependency Injection 프레임 워크 용 Guice를 사용합니다. 모든 바인딩은 util.di.SilhouetteModule.scala 파일에 구성됩니다. Dependency Injection이 Cake 패턴으로 대체되는 또 다른 예가 있습니다. 한마디로 [편집] look at this

: 당신이 Global.scala 파일을 보면

, 당신은 guice 구성을 찾을 수 있습니다. Guice는 모든 컨트롤러를 만들어야합니다. 모든보기는 컨트롤러에 의존하며 guice가 관리합니다.

위에서 언급 한 것처럼 SilhouetteModule.scala 파일은 Silhouette 구성을위한 것입니다. @Provides이라는 주석이 달린 메소드는 거의 없습니다. Guice documentation을 보면 이러한 메소드는 메소드가 리턴하는 클래스 유형이 필요할 때마다 Guice에 의해 호출됩니다. 예를 들어 guice가 Environment[User, CachedCookieAuthenticator]을 삽입해야 할 때마다이 메소드가 해당 유형을 리턴하기 때문에 def provideEnvironment 메소드를 호출합니다.

+0

답변 해 주셔서 감사합니다. 그러나 Guice를 사용하여 환경을 설정/정의하는 방법에 대한 더 나은 이해를 원했습니다 (이 점을 반영하기 위해 제목을 편집했습니다). 위의 두 번째 단락에 표시된 것처럼 SilhouetteModule은 이것이 수행되는 곳입니다. 그러나, 나는 바인딩 환경이 제공되는 곳 이외에도 provideEnvironment와 다른 가 사용되는 곳을 이해하지 못한다. 나는 모든 것이 Guice에 의해 두포로 설정되어있는 것 같아요. 위의 내용을보다 명확하게 이해하려면 Guice 문서를 확인해야합니다. –

+0

자세한 설명과 함께 편집 됨 :) –