프로젝트 생성

김찬미·2024년 6월 13일
0

CWM 프로젝트

목록 보기
8/8

개발 환경

  • Windows 10 64-bit
  • IntelliJ Ultimate
  • JDK 17
  • Spring Boot 3.3.0
  • MariaDB 10.6.5
  • Maven

인텔리제이 IDEA에서 생성하기

이제부터 본격적으로 프로젝트를 진행해보도록 하겠다. 첫 단계는 프로젝트 생성이다. 이번 프로젝트는 지금 공부중인 책 <스프링 부트 핵심 가이드>를 실제로 적용해본다는 생각으로 책과 비슷하게 설정해보려고 한다.

기존에 Velog에도 정리해두었지만, 나는 인텔리제이 Ultimate 버전을 사용하기 때문에 인텔리제이 IDEA 안에서 프로젝트를 생성하도록 하겠다.

기본 설정

  • Name: cwm
    • 'cwm'는 현재 프로젝트 가명 'Come With Me'의 약자이다.
  • Type: Maven
  • Language: Java
  • Group: com.project
    • 다른 프로젝트와의 통일성을 위해 개인 프로젝트에는 'com.project'를 써준다.
  • Project SDK: 17
  • Java: 17
  • Packaging: Jar

Gradle이 아닌 Maven을 선택한 이유

기존 프로젝트에서는 Gradle-Groovy를 사용하였지만 이번엔 Maven을 사용하려고 한다. 물론 Gradle이 빌드 시간이 짧고 유연하다는 장점이 있지만, Maven또한 많이 사용되는 정통 방식인 만큼 이번엔 비교적 숙련도가 낮은 Maven을 선택해 공부해 보려고 한다.

Gradle과 Maven의 차이에 대해선 Gradle vs. Maven 무엇을 써야할까? 글을 참고하자.

JDK 17을 도입한 이유

현재까지도 JDK 8이 가장 많이 쓰이는 것이 사실이지만, 난 Java+Spring Boot 조합으로 개발하는 개발자인 만큼 Spring Boot 3.1버전 이후(Spring Framework 6 이후)부터는 최소 JDK 17부터 지원한다는 사실이 크리티컬했다.

물론 현업에선 좀 더 낮은 버전을 사용하는 경우도 많다고 하지만 개인 프로젝트에서 굳이 성능 개선이 된 버전을 마다할 이유가 없어 선택하게 되었다.

의존성 추가

종류가 많긴 하지만 하나씩 차근차근 설명해보겠다.

의존성 종류 및 설명

  • Spring Web: 스프링 MVC를 사용하는 RESTful 애플리케이션을 만들기 위한 의존성이다. 기본으로 내장 톰캣(Tomcat)이 포함되어 있어 jar 형식으로 실행 가능. 웹 애플리케이션을 개발하기 위해 필요한 모든 의존성을 자동으로 가져온다.
  • Lombok: 반복적인 코드를 줄이기 위한 Java 라이브러리로, 자동 생성자, getter/setter 등의 코드를 자동으로 생성해주는 기능을 제공한다.
  • Spring Data JPA: 하이버네이트를 활용한 JPA 기능을 제공한다.
  • Spring Security: 스프링 시큐리티(인증, 권한, 인가 등) 기능을 제공한다.
  • Validation: 유효성 검사를 사용하기 위한 스타터 의존성이다. Hibernate Validator 등의 구현체를 사용하여 객체 유효성을 검증할 수 있다.
  • MariaDB Driver: MariaDB 데이터베이스에 연결하기 위한 JDBC 드라이버 의존성
  • Spring Configuration Processor: 스프링 부트 애플리케이션의 구성 속성(yml 혹은 properties)을 자동 완성시켜주는 프로세서이다.

나중 가서 더 추가해야 할 의존성들도 많지만 지금은 User부터 먼저 만들 생각이기에 이 정도만 해주었다.

의존성 정리

  1. JPA를 통한 데이터베이스 액세스: spring-boot-starter-data-jpa
  2. 보안 기능: spring-boot-starter-security
  3. Bean 유효성 검사: spring-boot-starter-validation
  4. 웹 애플리케이션 개발: spring-boot-starter-web
  5. MariaDB 연결: mariadb-java-client
  6. 스프링 부트 구성 속성 처리: spring-boot-configuration-processor
  7. 반복 코드 제거를 위한 Lombok: lombok
  8. 테스트 지원: spring-boot-starter-test, spring-security-test

각 의존성의 성능에 따라 정리하자면 이렇게 되겠다. 의존성은 수 없이 많고 다양한 만큼 프로젝트의 특성에 맞게 사용하는 것이 중요하다. 프로젝트를 진행하면서 의존성이 추가, 삭제, 수정될 수도 있다. 일단 지금은 초기 설정 정도로만 생각하고 넘어가자.

profile
백엔드 개발자

0개의 댓글

관련 채용 정보