Dependency Injection을 위해 Subcut을 프로젝트에 통합하려고하는데 타사 라이브러리와 통합 할 때 문제가 발생합니다.Subcut을 사용하여 타사 라이브러리에 문자열 삽입
라이브러리에로드 할 파일의 위치가 필요하며 Play 구성에 저장하고있는 위치에 Subcut을 사용하여 삽입하려고합니다. 아래는 제가 현재 정의 된 모듈입니다 :
object ServerModule extends NewBindingModule (module => {
import module._
bind[String] idBy 'location toSingle {
Play.current.configuration.getString("file.location").getOrElse (
throw new IllegalStateException("Cannot find location")
)
}
bind[ThirdPartyLib] toSingle {
val location = inject [String] (Some('location.toString))
ThirdPartyLib fromFile location
}
bind[Controller] toProvider { implicit module => new Controller}})
이 코드는 컴파일하지만 런타임에 그것이 'location
로 식별되는 위치 문자열 바인딩을 찾을 수 없다는 실패합니다.
또 다른 이유는 내가 왜 idBy 'location
을 할 수 있는지 이해하지 못하고 inject[T]('location)
을 수행하면 컴파일이 실패하게됩니까? 코드를 보면 idBy
은 Symbol을 String으로 변환 한 다음 inject
메서드는 String 만 취합니다. 이것은 Subcut API의 결함일까요? 아니면 제가 잘못하고있는 것입니까?