Back-End/Spring

[Spring] 5. 프로젝트의 구성

윤고랭이 2021. 7. 18. 04:14

 

 

일반적인 웹 프로젝트의 구조는 3-Tier의 구조를 활용

 

 

 

Presentation Tier
(화면 계층)
화면에 보여주는 기술을 사용하는 영역입니다. (즉, Servlet/JSP나 스프링 MVC가 담당하는 영역) Presentation Tier는 프로젝트의 성격에 맞춰 앱으로 제작하거나, CS(Client-Server)로 구성되는 경우도 있습니다. 이전 파트에서 학습한 스프링 MVC와 JSP를 이용한 화면 구성이 이에 속합니다.
Business Tier
(비즈니스 계층)
순수한 비즈니스 로직을 담고 있는 영역입니다. 이 영역이 중요한 이유는 고객이 원하는 요구 사항을 반영하는 계층이기 때문입니다. 이 영역의 설계는 고객의 요구 사항과 정확히 일치해야 합니다. 이 영역은 주로 'xxxService'와 같은 이름으로 구성하고, 메서드의 이름 역시 고객들이 사용하는 용어를 그대로 사용하는 것이 좋습니다.
Persistence Tier
(영속 계층 혹은 데이터 계층)
데이터를 어떤 방식으로 보관하고, 사용하는가에 대한 설계가 들어가는 계층입니다. 일반적인 경우에는 데이터베이스를 많이 이용하지만, 경우에 따라서 네트워크 호출이나 원격 호출 등의 기술이 접목될 수 있습니다. 이 영역은 MyBatis와 mybatis-spring을 이용해서 구성했던 파트 1을 이용합니다.

 

 

스프링 MVC를 이용하는 예제의 구성

 

 

각 영역의 네이밍 규칙

 

 

xxxController: 스프링 MVC에서 동작하는 Controller 클래스

 

xxxSerivce, xxxServiceImpl: 비즈니스 영역을 담당하는 인터페이스는 ‘xxxService’라는 방식을 사용하고, 인터페이스를   구현한 클래스는 ‘xxxServiceImpl’이라는 이름을 사용

 

xxxDAO, xxxRepository: DAO(Data-Access-Object)Repository(저장소)라는 이름으로 영역을 따로 구성하는 것이   보편적. 예제에서는 별도의 DAO를 구성하는 대신에 MyBatisMapper 인터페이스를 활용.

 

VO, DTO: VO의 경우는 주로 Read Only의 목적이 강하고, 데이터 자체도 Immutable(불변)하게 설계. DTO는 주로 데     이터 수집의 용도

 

 

 

기본적인 게시물의 CRUD 흐름

 

 


 

프로젝트 폴더 구성

 

 

1.

src/main/java

.java 파일이 모여 있는 곳. 스프링에서 MVC패턴의 서블릿 구조를 잡아주기 때문에 스프링

구조에 맞춰 클래스 파일들을 작성

 

 

2.

src/main/resources

 

자바 클래스에서 사용하는 리소스를 보관하는 곳. DB 연결을 위한 자원, 의존성 주입(DI)을

위한 xml 파일 등 자바 코드 외 모든 자원은 이곳에 넣어주면 됩니다.

 

 

3.

src/test

테스트. 자바 코드와 리소스를 보관하는 곳

 

 

4.

Maven Dependencies

(너무 길게 찍었네;;)

 

Maven에서 auto로 관리해주는 라이브러리 폴더. "pom.xml"에 작성된 라이브러리들을 자동으로

다운받아 (원하는 버전으로 만들려면 https://mvnrepository.com/) 접속해 원하는 것을 다운

빌드툴을 사용함으로써 개발자가 직접 관리해주지 않아도 되는 영역이 되었음

 

 

5.

 

src

Web에 관련된 자원이 담겨있는 루트 폴더.

 

 

6.

src/main/webapps/resources

 

웹에 필요한 자원들을 보관하는 곳. 사용자가 직접 접근 할 수 있는 공간이다.

컨트롤러가 요청을 가로채지 않고 바로 접근할 수 있도록 따로 설정해서 사용

하는 곳입니다.

 

 

7.

src/main/webapp/WEB-INF

 

웹에 필요한 코드 파일과 컴파일된 파일,환경설정 파일들이 보관되는 곳. (보안이 중요한 곳)

외부 사용자가 직접 접근 할 수 없다. 내부적으로만 접근 가능

 

 

8.

src/main/webapp/WEB-INF/classes

 

 

컴파일 된 파일이 보관되어 있는 곳.

 

 

9.

src/main/webapp/WEB-INF/spring

 

스프링 환경설정 파일(context)가 보관 되는 곳.

 

 

10.

src/main/webapp/WEB-INF/views

 

JSP,HTML이 보관 된 곳이며 이 폴다가 루트(/)의 기준점입니다.

사용자가 입력, 컨트롤러가 받아주는 URL이 이 폴더의 구조를 따라가기 때문에 잘 정리 하기