본문 바로가기

Spring/Benepicture 홈페이지

[베네픽처 홈페이지] Controller, Repository 분리

베네픽처의 컨트롤러를 보면 좋은 객체지향 설계를 한 프로그램이라고 할 수 없는 부분이 있습니다.

NoticeController.java

자세히.. 아니 금방 찾으실 수 있는 큰 오류는 바로 Controller에서 Repository를 직접 사용하고 있다는 점입니다.

물론 처음 스프링으로 만들어보고 만들어보면서 고치자라는 생각으로 만든 프로젝트이지만.. 이런 부분을 놓친다는 것이 글로만 배운 내용을 직접 코딩해보는 것이 이렇게 중요하다는 것을 다시 한번 느꼈습니다..(백문이불여일타)

 

 

- Controller에서 Repository를 직접 호출하면 안되는 이유

많은 이유가 있겠지만,

1. 중복되는 코드가 생깁니다.

MyBatis를 적용하면서 깨닫게 된 이유입니다. 기존 JDBC Template에서 MyBatis를 적용하면서 중복되는 코드들을 그대로 사용하면서 MyBatisService 라는 서비스 파일을 하나 더 만들게 되었습니다. 하지만 이번 공지사항을 수정하면서는 Repository만 JDBC Template에서 MyBatis로 바꿔주면 되는 OCP(개방 폐쇄원칙)을 잘 지키는 경우라고 생각합니다.

 

(후에 레이어드 아키텍처를 다시 다루면서 정리하겠습니다.)

 

 

- 코드 수정

 

1. 수정 전

NoticeController.java

Controller에서 Repository를 호출하여 사용하고 있습니다.

 

 

2. 수정 후

NoticeController.java
NoticeService.java

어떻게 보면.. 너무 간단하고 당연한 작업을 손쉽게 완료하였습니다.

 

 

- 정리

정말 간단하고 소스를 실행하는 데는 문제가 없는 그러한 문제였습니다.

하지만 이렇게 글로 정리하고 하는 이유는 한번 이렇게 글로 정리하며 제대로 정리를 하는 기분이 듭니다.

다음에는 레이어드 아키텍처를 정리하면서 객체지향과 조금 더 친해져야겠습니다.