[Spring] MVC Navigator

Posted by 신희준 on October 17, 2017


2017 - 10 - 17 (화)

  • MVC Navigator

  • 기본사항 정리


    1 .. Spring MVC navigator

    참고 : https://github.com/shj7242/practice_Spring



    ▶ 패키지 나누기 : 패키지 분류법칙.

    패키지들이 왜 org.zerock.web / org.zerock.domain 과 같이 구성되어있을까 고민해봤다.

    우선 이런식으로 나누는것은 일종의 규칙 같은것이다.

    보통 첫번째에는 org, net, com 처럼 그룹의 성격을 정한다. org의 경우 조직,기구 단체를 뜻한다.

    두번째에는 회사의 명칭이 보통들어가며, 세번째에는 domain에는 VO /web 에는 컨트롤러 안에 들어갈 클래스 또는 인터페이스의 용도에 따라 나누게 된다.



    ▶pom.xml : 어플리케이션에서 필요한 라이브러리를 저장하는 용도로 사용한다. Dependecy managing (maven이 관리해준다.)



    ▶web.xml : 모든 servlet들과 공유될수 있는 root-context.xml(컨테이너)를 생성해주며, Client가 request를 하였을 때 들어오는 모든 요청을 dispatcher-servlet(Client Controller) 로 보내주도록 설정하는 역할을 한다.



    ▶appServlet - dispatcher-servlet의 형태이다.



    ▶servlet-context.xml : 웹관련설정 (DispatcherServlet으로 설정된 서블릿의 요청을 정의한다.



    ▶Mapper.xml : 기능별로 매퍼를 분류해주며 Mapper 별로 DAO에서 사용할 SQL을 작성해준다.



    ▶DataSource : 아파치에서 제공하는 일정량의 DBCP(Database Connection pool)을 활용하여 생성한다.



    ▶MyBatis : SQL Mapper를 위한 프레임워크 SQL 구문 => 외부 xml파일로 분리



    ▶connection pool : DB에 미리 연결을 해 놓은 후 필요할 때마다 Pool에서 연결을 빌려와서 사용한다. (연결을 끊지 않는다.) pool을 너무 크게해놓으면 메모리소모가 크며 너무 적으면 대기시간이 길어진다.



    ▶DAO : DB에 접근하기 위한 인터페이스이다. DAOImpl 이라는 명칭으로 DAO 인터페이스를 구현한다.



    ▶Service : 비즈니스 로직을 실행하기위해 생성한 인터페이스이다. ServiceImpl 에의해 구현된다.




    전체적인 플로우 : 클라이언트가 요청하고 응답 받기 까지의 과정 (아직 완전히 정리하지 못함 계속 수정하면서 이해)

    client의 요청이 들어오면 모든 요청을 web.xml에서 받아 필터를해준다. Context가 로드되면 전체설정을 잡아주는 root-context.xml 가 로드된다.

    appServlet 을 1순위로 매핑하여 servlet-context.xml 를 통해 web관련 매핑을 실행한다. DataSource(커넥션 풀 이용을 위한) 생성, sqlsession(connection 객체)생성, 즉 특정 Controller의 메서드에 매핑하여 Client의 request에 따른 처리를 해준다.

    Controller 는 필요한 데이터를 DB에서 가져오기위해 요청한 Service의 종류에 따른 Service인터페이스를 구현한다.

    DAO를통해 DB에 접근한다. DAO에서 DB에 SQL 을 보내기위해 SQL 을 Mapper.xml에 생성하고 이것을 불러다 사용한다.

    >>MVC2 모델 정리 Post Sample Image