열 번째 수업 이모저모

  • 수업은 2017-05-11 19:03:00 +0900에 시작.
  • 오늘은 지난 시간 feedback 후 DI를 구현하는 연습을 한다.

단상: 삶과 프로그래밍

  • 어떻게 일할 것인가?
  • 내가 일지를 작성하는 방식을 공유하였다.

DI 프레임워크 1단계 실습

  • 요구사항

새로 만든 MVC 프레임워크는 자바 리플렉션을 활용해 @Controller 애노테이션이 설정되어 있는 클래스를 찾아 인스턴스를 생성하고, URL 매핑 작업을 자동화했다. 같은 방법으로 각 클래스에 대한 인스턴스 생성 및 의존관계 설정을 애노테이션으로 자동화한다.

먼저 애노테이션은 각 클래스 역할에 맞도록 컨트롤러는 이미 추가되어 있는 @Controller, 서비스는 @Service, DAO는 @Repository 애노테이션을 설정한다. 이 3개의 설정으로 생성된 각 인스턴스 간의 의존관계는 @Inject 애노테이션을 사용한다.

  • 내 구현 내용은 GitHub에 올려두었다.

  • 교수님은 다들 부담스럽겠지만 재귀를 사용해야 할 것이라며 재귀를 강조하셨지만, 나는 오히려 for loop보다 재귀를 선호하는 편이므로 자신만만하게 작업을 시작했다.

  • 그러나 몇 가지 메서드가 이미 구현되어 있다는 걸 생각하지 못했고, (BeanFactoryUtils.getInjectedConstructor나, BeanFactoryUtils.findConcreteClass 등) Repository 도 구현된 게 있다는 걸 발견하지 못해서 3 시간 가까이 갈피를 잡지 못하고 헤메이다 간신히 힌트를 보고 숙제를 할 수 있었다.

  • 일요일까지 끌고 오긴 했지만(…) 과제를 완수할 수 있어서 다행이라 생각한다.

Links