본문 바로가기
Framekwork/SPRING

[Spring Boot] 스프링 부트 게시판 프로젝트 실습 - application.yml 세팅

by 아이엠제니 2023. 8. 20.

 

 


 

 

나중에 나만의 홈페이지를 만들어 보고 싶다는 작은 소망이 있다. 그래서 일단은 흐름을 알기 위해, 유튜브에서 코딩레시피 채널에 올라온 [스프링부트 게시판 프로젝트]를 보면서, 게시판을 만들어 보려고 한다. 실습이 끝난 후에는 만들었던 것을 바탕으로 처음부터 다시 만들 예정이다. 거기에 기능을 하나하나 추가해서 만들어보는 게 내 목표다. 사실 이전에도 따라서 만들었던 적이 있다. 근데 시간이 조금 흐르기도 했고, 그때는 블로그 같은 공간에 따로 기록을 하지 않고 해서 뭔가 남은 게 없다. 그래서 이번에는 기록으로 남기고, 나중에 필요할 때 참고하려고 한다. 남겨야 나중에 찾아볼 수 있다. 열심히 하자.

 

 


1. 게시판 프로젝트 소개

1) 개발 환경

  1. IDE: IntelliJ IDEA Ultimate
  2. Spring Boot 2.6.13
  3. JDK11
  4. mysql
  5. Spring Data JPA
  6. Thymeleaf

 

 

2) 게시판 주요 기능

  1. 글쓰기 (/board/save)
  2. 글목록 (/board/)
  3. 글조회 (/board/{id}
  4. 글수정 (/board/update{id})
  5. 글삭제 (/board/delete/{id})
  6. 페이징처리 (/board/paging)

 

개발 환경과 게시판 주요 기능은 위와 같다.

코딩 레시피 강사님은 인텔리제이 커뮤니티 버전으로 실습을 진행하신다고 했는데, 나는 울티메이트 버전으로 한다.

게시판은 정말 필요한 기능들 위주로 실습이 진행된다.

 

글을 쓰고, 작성한 글의 목록을 확인한다.

그리고 작성한 글을 조회하고, 필요에 따라 글을 수정한다.

삭제가 필요할 시에는 글을 삭제하고, 게시물 목록이 늘어나는 것에 대비해 페이징 처리까지 해본다.

 

 

 


2. application.yml 세팅

스프링 부트 세팅은 'spring.io' 사이트에서도 가능하다.

https://start.spring.io/

 

IntelliJ Ultimate의 경우 인텔리제이에서 프로젝트 생성 시 설정할 수 있다.

 

 

1) Spring Boot Project 생성

  • Name: board
  • Language: Java
  • Type: Gradle - Groovy
  • JDK: 11 version
  • Java: 11
  • Pakaging: Jar

 

Group이랑 Artifact는 특별히 건들지 않아도 된다.

다 설정되었으면, [Next] 버튼을 클릭한다.

 

 

 

2.6.13 이 없는 관계로 2.7.14로 설정했다.

그리고 필요한 Dependency를 추가한다.

 

 

 

  • Spring Data JPA
  • Thymeleaf
  • Spring Web
  • Lombok
  • MySQL Driver

 

를 추가하고, [Create] 버튼을 클릭한다.

그럼 프로젝트가 생성된다.

 

 

 

2) build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.14'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '11'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    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'
}

tasks.named('test') {
    useJUnitPlatform()
}

'build.gradle' 파일에 가면 위와 같은 내용을 확인할 수 있다.

 

 

 

3) application.yml

src/main/resources 에 있는 appliation.properties 파일을 삭제한다.

같은 자리에 yml 파일을 만들기 위해서 삭제하는 거다.

 

 

 

같은 위치에 application.yml 파일을 생성한다.

 

  • application.properties
  • application.yml

 

두 파일 모두 스프링부트 프레임워크에서 사용되는 설정 파일이다.

스프링 애플리케이션의 구성을 지정하는 데 사용된다.

 

yml 형식으로 사용하는 이유는 복잡한 설정을 관리하기 쉽고, 가독성이 좋기 떄문이다.

아래에서 보면 알겠지만, yml 형식의 경우 들여 쓰기를 통해 계층 구조를 나타내고 있는 모습을 볼 수 있다.

주석은 '#'으로 시작한다.

 

# application.yml
# 서버 포트 설정
server:
  port: 9876

# database 연동 설정
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/first_board?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: firstB
    password: 1234
  thymeleaf:
    cache: false

# spring data jpa 설정
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    open-in-view: false
    show-sql: true
    hibernate:
      ddl-auto: create
  • 서버 포트 설정
    • server:
      • port: 9876
      • 강의에서는 8082로 설정을 하였지만, 나는 '9876'으로 설정했다.
  • database 연동 설정
    • spring:
      • datasource:
        • driver-class-name: 데이터베이스 연결 드라이버 지정. 스프링부트 애플리케이션에서 데이터베이스와의 연결을 설정할 때 사용함
        • url: 데이터베이스의 위치와 접속 정보를 지정하는데 쓰임. 사용하는 데이터베이스의 종류와 해당 데이터베이스의 접속 정보를 포함
        • username: 사용자 name
        • password: 사용자 password
      • thymeleaf:
        • cache: false 설정 시, 타임리프 템플릿 엔진의 캐싱 기능을 비활성화함
    • spring data jpa 설정
      • jpa:
        • database-platform: JPA에서 사용되는 데이터베이스 플랫폼을 지정하는 설정. JPA는 데이터베이스에 종속적인 SQL 쿼리를 작성하지 않고, 객체 지향적인 방식으로 데이터베이스를 다룰 수 있도록 도와줌
        • open-in-view: 양속성 컨텍스트(영속 객체의 관리 컨테이너)를 요청이 끝날 때까지 유지할지 여부 설정. false로 설정 시, 요청이 끝날 때 영속성 컨텍스트를 닫고, 트랜잭션이 종료되면 영속성 컨텍스트도 함께 종료됨
        • show-sql: 실행되는 sql 쿼리를 콘솔에 출력하도록 하는 옵션
        • hibernate:
          • ddl-auto: 데이터베이스 스키마의 자동 생성 방식을 지정하는데 사용됨. 주로 개발 환경에서 테스트 목적으로 사용됨 create는 애플리케이션 시작 시점에 기존 스키마를 삭제하고 새로운 스키마를 생성함 / update는 애플리케이션 시작 시점에 기존 스키마를 유지하면서 변경된 부분만 적용함)

 

 

 


💡 번외편

스프링부트 게시판 프로젝트를 위한 새로운 DB 생성 및 권한 설정

 

 

DB 생성 및 사용

👉 DB 생성

CREATE DATABASE FIRST_BOARD;

 

👉 DB 사용

USE FIRST_BOARD;

 

 

 

계정 조회

👉 MySQL 사용으로 변경

USE MYSQL;

 

👉 계정 조회

SELECT HOST, USER FROM USER;

 

 

 

계정 생성
CREATE USER 'firstB'@'localhost' identified by '1111';

 

 

권한 부여
GRANT ALL PRIVILEGES ON FIRST_BOARD.* TO 'firstB'@'localhost';

 

 

 

프로젝트를 생성하고, application.yml 파일 세팅하는 것까지 했다.

이다음부터는 실제 게시판에 게시글을 작성하는 실습을 따라할 것 같다.

무지성 타이핑이 아니라, 이해하려고 노력하면서 하자.

 

 

 

유튜브 '코딩레시피' - [스프링부트 게시판 프로젝트] 실습
300x250