하지만 이를 잘 하시려면 스프링이 아니라 모델링과 레이어드 아키텍처에 대해서도 잘 알아야 가능합니다.
질문사신 일반적인 웹 구성이라고 하면 스프링과는 무관하게 아키텍처를 어떻게 잡는냐에 대한 문제입니다.
보통은 레이어드 아키텍처를 통해서 구성하지만 요구사항에 따라서 바뀔수도 있습니다.
기술셋에 관해서는 저의 경우 스프링 + 메이븐을 통해서 이러한 레이어드 아키텍처 구조를 잡아갑니다. (참고로 웹프로젝트 1개만 사용하지
않습니다.)
SVN 기준으로 보면 대충 이런 모양이죠.
> 어플리케이션 레이어 구성은 프로젝트마다 특성이 있으니 정답은 없다가 맞을 겁니다
> 한가지 주의 할 점은 서비스 레이어에 오만가지 로직 코드를 넣으려고 한다는 겁니다. 물론 이도저도 갈 때가 없는 로직, 가령 객체와
> 객체 사이를 연결하는 로직은 서비스에 있는게 맞습니다.
> 하지만 도메인 객체가 처리해야 할 로직까지 서비스가 갖고 있다는 것은 분명 문제가 됩니다. 책임 단일화 원칙을 어기게 될것이
> 뻔해집니다. 이 문제에 빠져든다면 같은 로직의 코드들이 여기저기 널려있게 되겠죠.
> 서비스 레이어의 예전 이름은 퍼사드 패턴이었습니다. 퍼사드의 사전적인 의미를 생각하다면 서비스는 객체와 객체
> 사이를 잇는 가교 역할이면 충분합니다. 때문에 서비스 레이어에는 별다른 코드가 존재하지 않는 아주 얇은 층이 되게 됩니다
> 도메인이 할 일은 도메인이 하도록 하세요. 그럼 코드가 더 명확해집니다.
> 2012. 2. 14. 오후 9:52 hatto joyce <atha...@gmail.com> 작성:
> 프로젝트 마다 다르나 해외의 글들을 보면 기본은 contoller - serivce - dao 인거 같네요. 문제은 화두는 dao단에
> 받는 모델이나 도메인 객체가 되갰네요. 그객체가 유연하면 실 시스템도 유연해 질수있으니 예로 객체 맵핑 없는 map이나 List가
> 되겠죠. 운영도 유연해 집니다. 저같은 경우 3.0이상으로 가면서 serivce - repository 로 바꾸었네요 REST 기반으로
> 가면서 crud controller를 만들어서 crud repository에 받는 객체는 도메인이 받구요 mapper를 따로 둬서
> 복잡한것을 service단에 처리하도록 하였습니다. mapper라면 mybatis고 repository는 spring data
> jpa입니다 spring jpa data 쓸만한기능이 좀있네요. 추후 neo4j를 붙여도 되고 클라이언트 집중을 위해
> web - service - repository
> - mapper 로 정했구요
> web 단은 wicket으로 정했습니다. wicket은 표준웹또는 웹앱으로 갈때. web bundle또는 web 자원을 관리가용이
> 하죵. 보안이라던지. 모바일 등등. 프로제트 오픈 으로 술먹으니 서글퍼 지네요 외국에 나갈까. ㅡㅡ
> 2012. 2. 14. 오후 6:18에 "강동욱" <happenstant...@gmail.com>님이 작성:
>> 일단 ORM은 하이버네이트나 MyBatis(아니면 iBatis)는 기본으로 들어갈테고...
>> 메이븐으로 jar파일 관리하니까 메이븐도 필수인데다가 웹MVC면은 Spring Security도 기본포함이겠네요...
>> 사실 제가 사용하는 구성이 위의 구성이긴한데... 만들 때는 몰라도 테스트 할 때 정말 난감하더라구요.
>> JUnit과 목오브젝트를 이용해서 테스트환경을 구축해야 하는데
>> 일반 어플리케이션이면 몰라도 웹어플리케이션은 폴더환경이 어지러워서.....
>> 테스트환경이 뒤죽박죽이되곤 합니다;;;
>> 스프링의 장점이 다양성이긴 한데.. 솔직히 비슷한 기능을 하는 리스너들이 너무 많아서 도대체 뭘 써야 할 지 난감할때가 한두번
>> 이 아니죠...;;
>> --
>> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
>> 이 그룹에 게시하려면 ksug@googlegroups.com(으)로 이메일을 보내세요.
>> 그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.
>> 더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
>> --
> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> 이 그룹에 게시하려면 ksug@googlegroups.com(으)로 이메일을 보내세요.
> 그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.
> 더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
> --
> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> 이 그룹에 게시하려면 ksug@googlegroups.com(으)로 이메일을 보내세요.
> 그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.
> 더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.