1. Spring Initializr

  • Spring Boot 프로젝트를 쉽게 생성할 수 있게 도와주는 서비스
  • Spring Initializr 웹 페이지에 접속하면 아래와 같은 모습을 볼 수 있다.

  • Project 에서는 Maven 과 Gradle 중 원하는 빌드 도구를 선택 가능
  • Language 에서는 Java, Kotlin, Goovy 중 원하는 언어를 선택 가능
  • Spring Boot 버전 선택 가능
    • SNAPSHOT : 개발 도중인 daily build 버전. 변경이 잦기 때문에 안정적으로 사용하기는 어려움
    • M(Milestone) : 새로 개발중인 기능이 포함된 버전. 기능이 완성되면 바로 릴리즈 가능한 상태
    • RC(Release Candidate) : 정식 릴리즈될 후보 버전. 치명적인 결함이 발견되지 않는다면 릴리즈해도 되는 상태
    • GA(General Availability) : 정식 릴리즈된 버전. 여기서는 아무 명칭도 붙어있지 않은 버전이 GA 버전
  • Project Metadata 작성
    • Group
      • 프로젝트의 패키지명
      • 일반적으로 com.<회사명>.<프로젝트명> 등의 형태로 구성 (도메인을 뒤집어놓은 형태)
      • 특수문자나 대문자 등의 사용은 쓰지 않을 것이 권장됨 (가독성을 위해 hyphen 정도는 사용 가능)
    • Artifact
      • version을 붙이지 않은 배포용 jar 파일의 이름
      • 빌드 산출물의 이름을 미리 정하는 것
    • Name
      • 어플리케이션의 이름
      • 일반적으로 Artifact와 동일하게 사용
    • Description
      • 프로젝트에 관한 간략한 설명

    • Packaging
      • 배포 방식 선택 가능
      • JAR
        • 빌드 결과 실행가능한 jar파일을 얻을 수 있음
        • jar 파일 내에 톰캣이 내장되어있어 별도의 WAS를 설치하지 않고도 바로 서버 구동 가능
          => webflux 를 사용할 경우 톰캣 대신 Netty를 사용

      • WAR
        • NginX 와 같은 별도의 WAS를 사용하고자 하는 경우 선택해야할 방식
        • WAR 파일을 WAS에 웹 어플리케이션으로 등록하는 식으로 배포 가능
    • Java 버전 선택가능
      • Java 8부터 Stream이나 Lambda 표현식, 인터페이스의 default method, Optional 클래스 등
        다양한 기능이 업데이트되었기 때문에 일반적으로 최소 Java 8 이상의 버전을 사용

      • 오라클 웹 사이트에서 각 버전별 차이를 숙지하고 자신의 프로젝트에 적합한 버전을 골라
        사용하는것이 좋음.

 

 

2. Dependencies

  • Spring Initializr 페이지 우측의 Dependencies 에서 ADD 를 클릭하면 위와 같은 모습을 볼 수 있다.
  • 원래 Spring에서 다양한 라이브러리나 보조 프레임워크 등을 사용하기 위해서는 복잡한 의존성 설정이 필요
  • Spring Boot에서는 이러한 의존성 관리를 xml이나 그래들 빌드 파일 등에서 쉽게 관리할 수 있음
  • Spring Initializr의 Dependencies는 프로젝트를 생성하면서부터 미리 필요한 의존성을 추가할 수 있도록 해줌
  • 위 사진에서 선택된 Spring Web 의존성만 추가해도 Spring MVC 구조의 웹 개발을 위한 최소한의 환경이 갖춰짐

 

 

3. 프로젝트 시작

  • Spring Web 의존성만 추가해준 뒤 GENERATE 버튼을 누르면 프로젝트가 압축파일 형태로 다운로드 된다.
  • 압축을 풀고 디렉토리 내의 build.gradle 파일을 프로젝트로 불러오기만 하면 완성이다.

 

 

  • IntelliJ
    • Open > 프로젝트 디렉토리 내의 build.gradle 선택 > OK > Open as Project 선택
    • 이후 이 글에서는 IntelliJ를 사용하여 프로젝트를 진행
  • Eclipse
    • File > Import > Existing Gradle Project 에서 마찬가지로 build.gradle 파일을 선택하여 불러오기
    • Eclipse의 경우에는 별도로 Gradle 플러그인을 설치해줄 필요가 있음

 

 

4. 프로젝트 구조

  • 프로젝트를 불러오고 Gradle이 빌드를 완료하기까지 기다리면 위와 같이 프로젝트가 구성된다.

  • src
    • 웹 어플리케이션을 구성할 Java 코드와 리소스(이미지, 템플릿, css, js 파일 등)가 위치할 디렉토리

    • main
      • java
        • 실제로 웹 어플리케이션을 구성하는 Java 코드가 위치
        • 앱을 구동할 메인 어플리케이션 클래스는 물론 이전에 설명한 Controller, Service, Repository나
          Entity(모델), DTO, 개발자가 임의로 정의한 클래스나 Java Configuration 파일도 여기에 위치
      • resources
        • css, js, 이미지 파일, 템플릿(html) 등의 정적 리소스들이 위치하는 디렉토리
        • Dispatcher Servlet이 요청을 처리한 핸들러를 찾지 못했을 경우 탐색하는 정적 리소스 경로

    • test
      • JUnit Test를 위한 코드들이 위치하는 디렉토리
      • 일반적으로 실제 java 디렉토리와 같은 구조로 구성하여 테스트를 진행한다.

    • .gitignore
      • git 저장소에 commit 시에 staging 하지 않을 파일들을 명시한 파일
      • 원래 직접 작성해야하지만 Spring Initializr로 Spring Boot 프로젝트 생성시 자동으로
        .gitignore에 추가해야할 파일들을 작성해준다. 물론 추가적으로 명시해야할 파일이
        생기게 될 경우에는 직접 작성해줘야한다.

    • build.gradle
      • Gradle을 사용하여 프로젝트를 빌드하기 위한 설정 파일
      • 이 파일을 통해 프로젝트의 의존성을 간편하게 관리할 수 있다.

 

 

5. 메인 어플리케이션 실행

  • src/main/java/<Group 이름> 디렉토리 하위의 MycommApplication 을 실행하면 웹 서버를 구동할 수 있다.

  • 정상적으로 실행되었다면 콘솔창에 위와 같이 출력되며 웹 서버에 접속 가능한 상태가 된다.
  • 현재 서버는 로컬에서 구동중이며 톰캣의 기본 포트는 8080이므로 127.0.0.1:8080 으로 웹 서버에 접속 가능하다.

 

  • 접속해보면 위와 같이 Whitelabel Error Page가 뜨는 것을 확인할 수 있다. 아직 요청을 처리할
    컨트롤러도, 넘겨줄 정적 리소스도 없기 때문이다. 

  • 다음 포스팅에서는 간단한 index 페이지와 컨트롤러, 템플릿을 작성하여 원하는 웹 페이지를 띄워볼 것이다.

'프레임워크 > Spring' 카테고리의 다른 글

#10 Thymeleaf 1  (0) 2022.05.06
#9 MVC 구조 갖추기 - Controller/View 구현 1  (0) 2022.05.05
#7 Spring 의 구조  (0) 2022.05.03
#6 PSA(Portable Service Abstraction)  (0) 2022.05.02
#5 Spring AOP(Aspect Oriented Programming)  (0) 2022.04.30

+ Recent posts