Springboot 프로젝트를 처음 만들 때 어떻게 환경세팅을 해야하는지 정리하고자 합니다.
- 프로젝트 생성 및 버전 체크
- git 세팅
- 의존성(라이브러리)
- DB 세팅
- application.yml
start.spring.io를 통해 프로젝트를 생성할 수 있습니다.
여기서 중요한 점은 버전을 잘 맞춰야 한다는 점입니다.
떄론, 버전이 달라 일부 기능을 사용할 수 없거나, 다르게 동작하여 에러가 발생할 수 있습니다.
주로 사용하는 버전들입니다.
Java 8 or 11
SpringBoot 2.7.*
MySQL 8.*
프로젝트를 생성했다면 이제 앞으로 작업할 디렉토리 공간을 선정합니다.
.git, github 리포지토리를 만들고 연동합니다.
초기 프로젝트 세팅을 위해 우선 develop branch를 만듭니다.
이후 branch를 develop으로 이동합니다.
git branch develop
git checkout develop
이후 프로젝트 기본 세팅은 develop 브랜치에서 commit을 진행합니다.
주로 사용하는 필수 라이브러리입니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
어떤 데이터베이스를 선택할 것인지 결정한 후 해당 DB를 설치하고, 개발의 편의를 위해 GUI 환경을 지원하는 툴도 설치해야 합니다.
MySQL을 예로 들면
또한, DB 테이블이 한글을 지원하도록 설정해야 합니다.
ASCII로만 이루어져있다면, DB에 직접 UTF-8 인코딩 방식을 사용한다고 설정해야합니다.
alter table 테이블명 convert to charset utf8;
다음 쿼리 명령어를 해당 DB에 입력하여 테이블의 인코딩 방식을 변경합니다.
해당 yml 설정파일에 다양한 설정을 할 수 있습니다.
스프링 공식문서에서 yml에 설정할 수 있는 properties들이 나열되어 있습니다.
Common Application Properties
이 중 초기 프로젝트 세팅에 필수로 사용되는 속성들입니다.
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/스키마명
username: MYSQL 아이디
password: MYSQL 패스워드
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
properties:
hibernate:
show_sql: true
format_sql: true
mvc:
pathmatch:
matching-strategy: ant_path_matcher # about swagger
👉 DDL mode 설정
spring.jpa.hibernate.ddl-auto
DB 스키마 생성 및 관리 전략을 지정하는데 사용됩니다.
대표적으로 사용되는 5가지 전략입니다.
create
: 실행 시 기존 스키마 삭제 및 매번 스키마 새로 생성create-drop
: 실행 시 스키마 생성, 종료 시 스키마 삭제update
: 실행 시 기존 스키마 유지, 변경된 부분만 updatevalidate
: 실행 시 기존 스키마 유지, Entity 클래스와 스키마 간의 일관성 검증none
: hibernate에서 스키마 관리를 수행하지 않음이외에 Hibernate 공식 문서를 참조하여 ddl-auto 값들을 확인할 수 있습니다.
👉 Entity 매핑 네이밍 설정
spring.jpa.hibernate.naming.physical-strategy
Spring에선 현재 카멜케이스로 Entity와 자동 매핑이 진행됩니다.
UserName = user_name
변수 명과 DB칼럼명을 그대로 매핑 하게 하는 것이 편할 때 추가합니다.
DB 속성에 UserName으로 등록됩니다.
Common Application Properties
[Capstone Design] 기본 스프링부트 프로젝트 생성 및 MySQL 연동