Spring Initializr
스프링부트 프로젝트를 쉽게 만들기 위해 Spring Initializr 사이트에서 템플릿을 다운로드해서 임포트 하시면 됩니다. 제가 알기론 인텔리제이 Ultaimate 버전에서는 프로젝트 만드는 기능을 따로 지원하는 것으로 알고 있는데, 저는 Community 버전을 사용 중이기에 약간의 불편함만 가지고 넘어가겠습니다.
설정 완료 후 [GENERATE] 버튼을 누르면 아티팩트의 이름과 같은 zip파일이 다운로드 되는데, 자신이 사용하는 워크스페이스에 해당 알집을 풀어주면 됩니다.
생성된 프로젝트의 기본 패키지는 위와 같습니다.
src/main/java
패키지 아래는 자바 소스코드를 작성합니다.src/main/resources
디렉토리 아래는 HTML, CSS, JS, 이미지 파일 등의 정적 리소스를 저장합니다.src/main/resources/templates
에서 찾습니다. 해당 디렉토리 아래에 HTML 파일들을 작성하고, Controller Class에서 반환한 뷰와 동일한 이름의 html 파일을 찾아서 웹 브라우저에 띄워줍니다.src/test/java
패키지 아래에는 테스트 코드를 작성합니다.🐢
추가로 패키지 테마에 관한 부분입니다. 굳이 안쓰고 기본으로 사용하셔도 되는데, 저는 뭔가 테마를 적용하면 더 가독성이 좋아지는거 같다는 건 헛소리고그냥 예쁩니다.
🐢
properties 와 yaml 의 차이를 알고 싶다면 다음 글을 참고하시면 되겠습니다.
Spring Boot에서 application.yml vs application.properties 차이점
//파일 경로: src/main/resources/application.yml
# 애플리케이션 포트 설정
server:
port: 80
spring:
# MySQL 연결 설정
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/shop
username: 유저ID
password: 유저PW
# JPA 설정
jpa:
hibernate:
ddl-auto: create # 데이터베이스 초기화 전략
properties:
hibernate:
show_sql: true # 실행되는 쿼리 콘솔 출력
format_sql: true # 콘솔창에 출력되는 쿼리를 가동성이 좋게 포맷팅
database-platform: org.hibernate.dialect.MySQL5Dialect
저는 개인적으로 yaml 파일이 더 가독정이 좋다고 느껴져서 properties 보다는 yaml 파일로 셋팅하겠습니다. 포트는 80으로 설정하겠습니다. 이유는 없습니다.
데이터베이스 초기화 전략은 실제 운영환경이 아니므로 개발 편의상 create 옵션을 사용해 진행하겠습니다. 운영환경에서는 절대로 create, create-drop, update를 사용하면 안 된다고 합니다. 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스에서 직접하며, none을 사용하거나 validate를 이용하여 정상적인 매핑 관계만 확인합니다.
none
: 사용하지 않음create
: 기존 테이블 삭제 후 테이블 생성create-drop
: 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제update
: 변경된 스키마 적용validate
: 엔티티와 테이블 정상 매핑 확인localhost:설정한 포트
를 입력하시면 Whitelabel Error Page가 나올껍니다.//src/main/java/me/jincrates/gobook/GobookApplication.java
package me.jincrates.gobook;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class GobookApplication {
public static void main(String[] args) {
SpringApplication.run(GobookApplication.class, args);
}
@GetMapping(value = "/")
public String HelloWorld() {
return "Hello World";
}
}
위와 같이 나오는 것을 확인하셨다면 다시 원상복구....
//src/main/java/me/jincrates/gobook/GobookApplication.java
package me.jincrates.gobook;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GobookApplication {
public static void main(String[] args) {
SpringApplication.run(GobookApplication.class, args);
}
}