1 minute read

개요

: 스프링 프로젝트는 구조는 다음과 같다. 가장 많이 사용하는 프로젝트 기준으로 설명한다.

  • 프로젝트: Spring Legacy Project
  • 템플릿: Spring MVC Project

구조

: 아래는 이클립스 프로젝트 전체 구조이다.

사진1

(1) src/main/java

사진2

  • 자바(.java) 파일이 모여있는 곳
  • 패키지를 이쁘게 폴더링하고 그 인에 자바 클래스를 생성한다.
  • 스프링에서 이미 MVC 패턴의 서블릿 구조를 잡아주기 때문에 따로 서블릿을 만들 필요 없이 스프링 구조에 맞춰 클래스 파일들을 작성해주면 된다.

(2) src/main/resources

사진3

  • 자바 클래스에서 사용하는 리소스를 보관하는 곳.
  • 핵심은 자바 클래스에서 사용한다는 자원이라는 것이다.
  • 예시)
    • DB 연결을 위한 자원(Mapper)
    • 의존성 주입(DI)을 위한 xml 파일(Log4j)

(3) src/test | src/test/java | src/test/resources

사진4

  • 위와 같은 역할이다.
  • 다른점은 테스트를 위한 자바 코드와 리소스를 보관하는 곳이다.
  • 가끔 나는 종종 간단하게 단위 테스트를 수행하고 싶을때 사용했다.
  • 예시)
    • JUnit Test

(4) Maven Dependencies

사진5

  • 메이븐에서 자동으로 관리해주는 라이브러리 폴더.
  • pom.xml 안에 작성된 라이브러리들을 자동으로 다운 받고 관리해준다. (패키지 아티팩트와 버전들을 명시해주면 알아서 관리된다.)
    • 그런데 폐쇄망 개발 환경에서는 사용이 어렵다..
    • 나의 경우 폐쇄망에서 개발하는 경우가 많아서 메이븐 개념은 정말 필수라고 생각한다.

(5) src

사진6

  • 웹(Web)에 관련된 자원이 담겨있는 루트(Root) 폴더.
  • 하위 폴더에 웹과 관련된 모든 자원들이 분류되어 있다.
  • main 폴더 안에 모두 들어가있다.
  • test 폴더는 거의 비어있었고 사용하지 않았다 :)

(5-1) src/main/webapp/resources

사진7

  • 웹에 필요한 다양한 자원들을 보관하는 곳,
  • 정적인 웹리소스 js, css, img 파일 등이 보관되어 있다.
  • 퍼블릭(Public)한 공간으로 사용자가 직접 접근할 수 있다.
    • 보통 컨트롤러가 요청을 가로채지 않고 바로 접근할 수 있도록 따로 설정해서 사용하는 곳이다.

(5-2) src/main/webapp/WEB-INF

사진8

  • 웹에 필요한 코드 파일과 컴파일된 파일, 그리고 여러 환경설정 파일들이 보관되는 곳
  • 보안이 중요한 파일들이기 때문에 외부 사용자가 직접 접근할 수 없다.
  • 컨트롤러(정확히는 핸들러)를 통해 내부적으로만 접근할 수 있는 폴더이다.

(5-2-1) src/main/webapp/WEB-INF/classes

사진9

  • 컴파일 된 파일이 보관되는 곳
  • 나의 경우는 항상 비어있거나 폴더 자체가 없었는데 기본적으로 프로젝트 생성시 target 폴더에 컴파일되게끔 디폴트 설정이 되어있다. (여기만 그런건가?) 좀 더 알아봐야겠다.

(5-2-2) src/main/webapp/WEB-INF/spring

사진10

  • 스프링 환경설정 파일(context)이 보관되는 곳.
  • 예시)
    • root-context.xml
    • servlet-context.xml

(5-2-3) src/main/webapp/WEB-INF/views

사진11

  • JSP, HTML 파일이 보관되는 곳.
  • 이 폴더가 루트(/)의 기준점입니다.
  • 사용자가 입력하고, 컨트롤러가 받아주는 URL이 이 폴더의 구조를 따라가기 때문에 잘 정리해서 사용할 필요가 있는 곳이다.

마치며..
프로젝트마다 폴더링 구조가 너무 다양했다.
자연스러운 느낌적으로 아 이건 보통 여기서 사용하지 하며 운영했는데.. 적어도 기본 구조는 필수적으로 숙지해야겠다..

Leave a comment