Spring 프로젝트 생성
spring boot 프로젝트는 보통 다음 사이트에서 생성하는게 일반적이다. https://start.spring.io/

다음과 같은 값으로 지정하여 프로젝트를 생성하였다. 의존성들은 필요하다고 생각되는 것들은 모두 추가해놓았는데 추후 더 필요하게 되면 추가 가능하니 많이 신경쓰지 않아도 될 듯 하다.
주요 라이브러리
스프링 부트 라이브러리
spring-boot-starter-web : 웹 애플리케이션 개발을 위한 필수 라이브러리 모음으로 내장 톰캣 서버와 스프링 mvc 설정이 포함됨
spring-boot-starter-tomcat : 스프링 부트 내장 웹 서버
spring-webmvc : 스프링 웹 MVC를 구성하는 라이브러리
spring-boot-thymeleaf : 타임리프 템플릿 엔진. 서버 사이드 렌더링 기능을 지원
spring-boot-starter-logging : 스프링 부트의 기본 로깅 설정을 위한 라이브러리. logback, slf4j를 사용
테스트 라이브러리
junit : 테스트 프레임워크
mockito : 목 라이브러리
assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
spring-test : 스프링 통합 테스트 지원
생성한 스프링 프로젝트를 인텔리제이에서 열면 위와 같은 구조로 존재함을 확인할 수 있다. 제대로 된 것인지 확인할 겸 간단한 웰컴 페이지를 하나 생성해서 화면을 띄워보았다.

이 상태에서 바로 실행을 하게 되면 아래와 같은 에러가 발생한다. 이 에러는 Database에 연결하기 위해서 필요한 정보가 존재하지 않기 때문에 발생하는 에러다. application.properties에 연결하고자 하는 디비 정보를 입력하면 된다.

프로젝트에 사용할 디비는 팀원이 생성해 둔 MySQL을 사용할 예정이다. 서비스가 사용되면서 발생하는 데이터(회원, 장바구니 등등)은 MySQL에 적재되어 사용될 예정이고, 검색과 조회를 위한 데이터(상품, 로또)는 검색 성능을 위해서 엘라스틱 서치를 사용하기로 하였다.
spring:
application:
name: lotto
elastic:
url: ${ELASTIC_URL}
datasource:
url: ${DATASOURCE_URL}
username: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
open-in-view: true
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate.format_sql: true
dialect: org.hibernate.dialect.MySQL8InnoDBDialect
defer-datasource-initialization: false
테이블 스키마 설정에 대한 옵션은 다음값들 중에서 골라서 사용하면 된다. 일반적으로 개발환경에서는 update를, 운영환경에서는 validate를 사용한다기에 update로 설정하였다.
- none : 엔티티가 변경되더라도 데이터베이스를 변경하지 않음
- update : 엔티티의 변경사항을 데이터베이스에 반영
- validate : 변경사항이 있는지 검사만 진행. 다른 부분이 있을 경우 애플리케이션을 실행하지 않음
- create : 서버가 시작될 때 모두 drop하고 새로 생성
- create-drop : create와 동일하게 진행되며 종료시에 다시 모두 drop함
기본 설정을 마치고 간단한 html을 작성해 spring이 잘 구동하는지 확인해보았다.

'Dev Tool > Spring boot' 카테고리의 다른 글
[Spring] 로또 API 단위 테스트 코드 작성 (0) | 2025.01.23 |
---|---|
[Spring] 테스트 코드 기본 개념 (0) | 2025.01.22 |
[Spring] 로또 API 구현(2) & 예외 처리(@validate) (0) | 2025.01.22 |
[Spring] Swagger 연동 (1) | 2025.01.22 |
[Spring] 엘라스틱 서치 연동 & API 구현 (0) | 2025.01.22 |