MVC
[Spring] MVC Layered Architecture : Controller와 Service의 책임 나누기
[Spring] MVC Layered Architecture : Controller와 Service의 책임 나누기
2020.07.06그림으로 정리한 Spring MVC Application Architecture 왜 layer가 필요한가? layer를 왜 분리할까? layer를 분리한다는 것에는 어떤 의미가 있는가? layer를 나누게 되면, 다른 layer를 추상화 할 수 있다. 추상화를 잘 했다면, 관심 분리 를 통해 현재 작업하고 있는 layer에 집중할 수 있다. 다른 layer의 모듈을 부품을 갈아끼우듯 변경할 수 있다. 각 layer가 자신의 세부사항을 몰라도 상관 없도록, 잘 추상화해서 제공하고 있었다면 가능하다. 컴포넌트 간의 의존 계층 관계를 깔끔하게 유지할 수 있다. 각 layer를 넘나들면서 스파게티처럼 꼬여 있는 관계가 아니라, 위에서 아래로 떨어지는 간단한 구조 혹은 복잡한 참조는 같은 계층 내에서 끝내는 등 ..
[Spring] MVC Layered Architecture : Map 보다 Data Class 사용해야 하는 이유
[Spring] MVC Layered Architecture : Map 보다 Data Class 사용해야 하는 이유
2020.06.25Map과 data class는 애초에 용도와 목적이 다르다. Map은 data class 처럼 쓸 수는 있지만, 그렇게 쓰는게 Map의 올바른 사용법이라고 할 수는 없다. Data Class 대용으로 Map을 사용할 때의 단점 타입 정보가 유실되어 type safe 하지 않다는 점. 이게 가장 큰 단점이자 본질적인 단점이다. 꺼낼 때 형변환 필요해서 번거롭다. key 지정을 String으로 하다 보니 잘못된 참조에 대한 컴파일 타임 체크가 불가능하다. fragile. 어떤 필드가 어디서 사용되고 있는건지 IDE의 추적 기능 도움을 받을 수 없어 일일히 따라가보아야 한다. 리팩터링이 굉장히 어렵다.=유지보수가 어렵다. (e.g., 이 필드 삭제 해도 되는걸까?) Map을 Domain Model로 쓴다면? ..
[Spring] MVC
[Spring] MVC
2017.11.11더보기 JSP 모델 1 구조 웹 브라우저의 요청을 JSP가 받아 직접 처리(로직, 출력) 따라서 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 출력하는 코드가 혼재한다. JSP 모델 2 구조 웹 브라우저의 요청을 단일 서블릿이 받아 로직 클래스에서 로직을 처리하고, 결과를 보여줄 JSP 페이지로 포워딩. JSP는 출력만 처리. 웹 브라우저의 요청을 단일 진입점, 하나의 서블릿에서 처리한다는 점이 특징이다. 그래서 서블릿에서 웹 브라우저의 요청을 구분해서 출력을 생성할 JSP를 선택하게 된다. 모델 2 구조가 곧 MVC 패턴을 웹에 적용한 것이라고 생각하면 된다. JSP 모델 2 구조 기반 MVC Model : 명확한 규칙은 없으나 보통 로직 처리 클래스, 자바빈, 서비스 View : JSP,..