Structure for play-scala (Controller, Service, DAO)

Updated:
Categories: Playframework
Tags: #Scala #Play framework

Overview

Play framework v2.5 for scala (scala v2.11.7 사용) 프로젝트에서 적용하고 있었던 Controller, Service, DAO(Data access object) 구조 코드 정리와 이를 생각하다가 갑지기 궁금해진 두 가지 궁금증에 대한 해결.

  1. B 객체에 Dependency injection 된 C 객체, B 객체를 Injection한 A 객체 존재 시, A에서 C로 바로 접근 가능한가?
    • 예) Controller에서 injection한 Service 객체에서, 그 Service 객체에서 injection한 DAO 객체를 접근할 수 있는지 궁금해짐.
  2. trait 내 private value는 mixin한 객체에서 접근 가능한가?

Curiosity & Solution

  1. B 객체에 Dependency injection 된 C 객체, B 객체를 Injection한 A 객체 존재 시, A에서 C로 바로 접근 가능한가?
    • 접근 불가
    • 위 개요에서 예로 들었던 상황에서는 DAO 객체는 Service 객체와만 연결되고, Controller에서는 DAO 객체를 모르도록 분리됨. 하지만, Service 내 선언된 함수 중 Dependency injection 된 객체를 넘겨주는 함수가 있다면 접근하게 할 수는 있음.
  2. trait 내 private value는 mixin한 객체에서 접근 가능한가?
    • 접근 불가