Scala Language
의존성 주입
수색…
내부 구현 클래스가있는 Cake Pattern.
//create a component that will be injected
trait TimeUtil {
lazy val timeUtil = new TimeUtilImpl()
class TimeUtilImpl{
def now() = new DateTime()
}
}
//main controller is depended on time util
trait MainController {
_ : TimeUtil => //inject time util into main controller
lazy val mainController = new MainControllerImpl()
class MainControllerImpl {
def printCurrentTime() = println(timeUtil.now()) //timeUtil is injected from TimeUtil trait
}
}
object MainApp extends App {
object app extends MainController
with TimeUtil //wire all components
app.mainController.printCurrentTime()
}
위의 예제에서 MainController에 TimeUtil을 주입하는 방법을 보여주었습니다.
가장 중요한 구문은 TimeUtil
을 MainController
에 주입하는 자체 주석 ( _: TimeUtil =>
)입니다. 다시 TimeUtil
, MainController
는 TimeUtil
의존합니다.
내 생각에 내부 클래스를 조롱 할 수 있으므로 테스트하기가 쉽기 때문에 각 구성 요소에서 내부 클래스 (예 : TimeUtilImpl
)를 사용합니다. 또한 프로젝트가 더욱 복잡해질 때부터 메소드가 호출되는 곳을 추적하는 것이 더 쉽습니다.
마지막으로 모든 구성 요소를 하나로 연결합니다. Guice에 익숙하다면 Binding
과 동일합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow