⚙️ Backend/스프링(Spring) Framework

스프링(Spring) - 스프링 MVC 프로젝트의 기본 구성

코너(Corner) 2021. 5. 10.
반응형

 

스프링 MVC 프로젝트의 기본 구성 

 

스프링 MVC에서 어떤 단계를 거쳐서 실행되는 지를 이해해야 문제 발생 시 빠른 대처와 대안을 찾을 수 있습니다.

웹 프로젝트는 3-tier(티어)방식으로 구성합니다.

Presentation ↔ Business ↔ Persistence

  • Presentation Tier(화면 계층) - 화면에 보여주는 기술을 사용하는 영역입니다. 
    • Servlet/JSP 혹은 스프링 MVC가 담당하는 영역이며 화면 구성이 이에 속합니다.   
      -> .jsp
  • Business Tier(비지니스 계층) - 순수한 비지니스 로직을 담고 있는 영역입니다.
    • 고객이 원하는 요구사항을 반영하는 계층이기 때문에 중요한 영역입니다.  
      이 영역의 설계는 고객의 요구사항과 정확히 일치해야 하며, '000Service'와 같은 이름으로 구성합니다.  
      -> .java 
  • Persistence Tier(영속 계층 or 데이터 계층) - 데이터를 어떤 방식으로 보관하고, 사용하는 가에 대한 설계가 들어가는 계층입니다.  
    일반적으로 DB를 많이 이용하지만, 상황에 따라서 네트워크 호출 혹은 원격 호출 등의 기술이 접목됩니다.

 

** 계층 관계도

[Spring MVC] ↔ [Spring Core]   
            .            ↕                               

                                                               [spring-mybatis] ↔ [Mybatis] ↔ [DB]

각 영역은 독립적으로 설계되어 나중에 특정한 기술이 변하더라도 필요한 부분을 전자제품의 부품처럼 쉽게 교환할 수 있게 하자는 방식입니다. 각 연결 부위는 인터페이스를 이용해서 설계하는 것이 일반적인 구성 방식입니다.


Naming Convention(명명 규칙)

-com.mycompany.

                                     config            : 프로젝트와 관련된 설정 클래스들의 보관 패키지  
                                     controller      : 스프링 MVC의 Controller 들의 보관 패키지  
                                     service          :  스프링 Service 인터페이스와 구현 클래스 패키지  
                                     domain         : VO, DTO 클래스들의 패키지  
                                     persistence   :   MyBatis Mapper 인터페이스 패키지  
                                     exception      :    웹 관련 예외처리 패키지  
                                     aop                 :     스프링의 AOP 관련 패키지  
                                     security          :  스프링 Security 관련 패키지 (자동 로그인, 세션 종료 관련 클래스)
                                     util                    : 각종 유틸리티 클래스 관련 패키지  


비지니스 계층

프레젠테이션 계층과 영속 계층의 중간다리 역할을 한다.  
영속 계층은 DB를 기준으로, 비지니스 계층은 로직을 기준으로 처리한다.  

예를 들어 쇼핑몰에서 상품 구매 시 포인트 적립을 하나로 가정한다면, 
영속 계층(Mapper)의 설계는 '상품', '회원'으로 나누어 설계하지만,  
비지니스 계층은 상품 영역과 회원 영역을 동시에 사용해서 하나의 로직을 처리하게 된다.

Business Tier  <---    Service   <---   Persistence Tier

                    구매 서비스                                                     상품 처리 객체 / 회원 처리 객체 

* 일반적으로 비지니스 영역에 있는 객체들은 서비스(Service)라는 용어를 많이 사용한다.

 

 

 

반응형

댓글