1.viewlayer 프레임워크 : tiles Frameworke (presentation)
2.domainlayer 프레임워크 : 롬복
3.persistentlayer 프레임워크 : mybatis
memberinsert&memberupdate controller 보면
중복코드목록
해결 => 프론트컨트롤러
요청은 앞으로 프론트컨트롤러가 받게 된다.
insert요청이면 프론트가 insert컨트롤러로 보낸다.
update요청이면 프론트가 update컨트롤러로 보낸다.
프론트컨트롤러만 서블릿으로 만들면 되고 커멘드핸들러(백엔드컨트롤러)는 서블릿으로 안만들어도 된다.
insert&update컨트롤러는 커멘드핸들러나 백엔드컨트롤러로 불린다.
프론트컨트롤러가 어떤 요청인지 커멘드핸들러(백엔드컨트롤러)로 보내려면 매핑이란게 필요하다.
프론트와 백엔드 사이에 결합력을 어떻게 해야 맞출것인가..
해결 => 커멘드패턴 적용
서블릿에 붙는 webservlet어노테이션을 대신하는 커스텀어노테이션을 만들것이고 그것을 백엔드 컨트롤러에 붙일것이다.
커스텀어노테이션을 수집해야하는데 컨포넌트가 그 역할을 할것이다. 어떤 컨트롤러가 어느 어노테이션을 가지고 있는지 어노테이션 트레이싱을 해야한다.
컴포넌트는 그걸 수집에서 map으로 관리할 것이다.
key는 어떤 요청이란 정보가
value는 어느 요청처리자란 정보
하나의 커멘드가 발생이 됐을때 컴포넌트가 어떤 요청인지 검색을 끝내고 다시 프론트에 보내고 프론트는 invoker에게 보낸다. invoker는 해당 백엔드 컨트롤러에게 보낸다.
백엔드에서는 작업을 끝내고 리다이렉/포워드 중에 결정이 난다.
이 논리적인 뷰네임이 invoker에게 다시 전달된다.
프론트컨트롤러 → 맵가지고 있는애 → 프론트컨트롤러 → invoker → 백엔트 컨트롤러(scope, 논리적뷰네임 리턴) → invoker → 프론트 컨트롤러