Java | Spring

[Spring Boot] Bank App (1) 초기 세팅과 환경 구축

@leem 2025. 2. 17. 00:10

Spring Boot 프로젝트를 실행하는 방법Gradle 설정, 그리고 application.yml 파일 관리에 대해 정리해볼게요.


Project  Setting

Spring Boot 프로젝트를 일반 Java 프로젝트처럼 실행 가능

main() 함수가 있는 클래스를 실행

IntelliJ에서 실행하는 방법

  • 프로젝트에서 ▶ Run 버튼을 눌러 실행
  • Application 실행을 선택하면 바로 실행됨
  • 별도의 빌드 도구 없이 Java만 설치되어 있으면 실행 가능

Gradle로 Spring Boot 프로젝트 실행하기

Spring Boot 프로젝트는 일반 Java 프로젝트와 다르게 Gradle 또는 Maven을 사용해서 실행하는 게 일반적이에요.

실행 방법

  1. Gradle Run Configuration에서 bootRun 설정 후 실행
  2. 또는 터미널에서 아래 명령어 실행
./gradlew bootRun

Gradle

프로젝트 빌드 및 의존성 관리 도구 (Java, Kotlin 등에서 사용)

  • 필요한 라이브러리를 자동으로 다운로드
  • 프로젝트 빌드 및 실행을 도와줌
  • build.gradle 파일에서 라이브러리 선언 후 자동 설정

왜 Spring Boot에서 Gradle을 사용할까?

  • 📦 라이브러리 자동 관리: 필요한 패키지를 쉽게 가져올 수 있음
  • 🔄 빌드 자동화: 애플리케이션을 빠르게 패키징하고 실행
  • 환경 설정 간소화: 배포 환경별 설정 관리 가능

실행 방식 비교

실행 방식 특징 실행 속도 사용 예시
Gradle (bootRun) Gradle을 통해 실행 ⏳ 느림 (빌드 포함) 새로운 환경에서 처음 실행할 때
Application 실행 IDE에서 직접 실행 ⚡ 빠름 (빌드 없이 실행) 디버깅, 빠른 테스트

📑 application.yml 설정

Spring Boot에서 application.yml은 주요 환경 설정을 관리하는 파일
👉 서버, 데이터베이스, 로깅, API 키 등 다양한 설정을 저장할 수 있다.

기본 설정 예시

server:
  port: 8080 # 서버가 사용할 포트 번호 설정
  servlet:
    encoding:
      charset: UTF-8 # 서블릿의 응답과 요청 인코딩을 UTF-8로 설정
      force: true # 요청과 응답에 대해 이 인코딩을 강제로 사용하도록 설정

spring:
  mvc:
    view:
      prefix: /WEB-INF/view # JSP 파일이 위치한 디렉토리 접두사
      suffix: .jsp # 뷰 이름에 자동으로 추가될 파일 확장자 설정 (.jsp)

  servlet:
    multipart:
      max-file-size: 20MB # 업로드할 파일의 최대 크기 (20MB)
      max-request-size: 20MB # 멀티파트 요청의 전체 크기 제한 (20MB)

  datasource:
    # H2 데이터베이스 설정
    url: jdbc:h2:mem:bankdb;MODE=MySQL # H2 인메모리 데이터베이스 사용 (MySQL 모드 활성화)
    driver-class-name: org.h2.Driver # H2 JDBC 드라이버 지정
    username: sa # H2 기본 사용자 이름
    password: '' # H2 기본 비밀번호 (빈 값)

    # MySQL 데이터베이스 설정 (사용하지 않을 경우 주석 처리)
    # url: jdbc:mysql://localhost:3306/mybank?serverTimezone=Asia/Seoul
    # driver-class-name: com.mysql.cj.jdbc.Driver
    # username: root
    # password: asd123

#  sql:
#    init:
#      schema-locations:
#        - classpath:db/table.sql # 데이터베이스 테이블 생성 스크립트 위치
#      data-locations:
#        - classpath:db/data.sql # 초기 데이터 삽입 스크립트 위치

  h2:
    console:
      enabled: true # H2 데이터베이스 콘솔 활성화 (http://localhost:8080/h2-console 접속 가능)

  output:
    ansi:
      enabled: always # 콘솔 출력에 ANSI 색상 코드 사용 가능하도록 설정

# MyBatis 설정
#mybatis:
#  mapper-locations:
#    - classpath:mapper/**/*.xml # MyBatis 매퍼 파일 경로 설정 (모든 XML 매퍼 파일 포함)
#  configuration:
#    map-underscore-to-camel-case: true # 데이터베이스의 언더스코어 네이밍을 카멜 케이스로 자동 매핑
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # MyBatis SQL 로그를 콘솔에 출력

# 로깅 설정
logging:
  level:
    org.apache.ibatis: DEBUG # MyBatis SQL 실행 로그를 DEBUG 레벨로 출력


# 사용자 정의 설정
tenco:
  key: 54d5cb2d332dbdb4850293caae4559ce88b65163f1ea5d4e4b3ac49d772ded14 # (API 키 예제, 실제 사용 시 보안에 주의)

왜 application.yml로 관리할까?

코드를 수정하지 않고 설정 변경 가능
배포 환경별 설정 분리 가능 (dev/prod)
보안 및 외부 설정 관리 가능


주요 설정 카테고리 정리

설정 종류 설명 예제
서버 설정 서버 포트, 인코딩 server.port: 8080
DB 설정 MySQL, H2 등 연결 정보 spring.datasource.url: jdbc:mysql://…
JPA 설정 Hibernate, DDL 전략 spring.jpa.hibernate.ddl-auto: update
로깅 설정 로그 레벨 조정 logging.level.org.springframework: DEBUG
파일 업로드 설정 업로드 가능 크기 제한 spring.servlet.multipart.max-file-size: 10MB
MyBatis 설정 MyBatis 매퍼 설정 mybatis.mapper-locations: classpath:mapper/*.xml
외부 API 설정 API 키, 외부 연동 tenco.key: xxxxxx
프로파일 설정 개발/운영 환경 분리 spring.profiles.active: dev

정리

💡 Spring Boot 프로젝트 실행 → Gradle bootRun 사용 권장
💡 Gradle은 빌드 및 라이브러리 관리 도구
💡 application.yml은 환경 설정을 쉽게 변경할 수 있는 파일