BackEnd/코틀린 스프링

[Kotlin Spring] 프로젝트 00. 프로젝트 초기 설정

세모 2024. 10. 27. 17:22

오늘부터 프로젝트 진행사항 등을 블로그에 기록합니다.

프로젝트 초기 설정 시작해 보겠습니다.


이 기록 겸 강의는 초보자 기준으로 작성이 되었고, 새로 시작하게 된 코틀린 스프링 유저에게 많은 도움이 될 수 있었다면 좋겠다는 마음으로 시작합니다.

틀린 부분이 있다면 알려주시면 감사하겠습니다.


 

시작과 앞서 개발 환경은 인텔리제이, DB는 MySQL을 사용합니다.
Spring Initializr

해당 링크를 통해 초기 파일을 만들어 주는데요

  • Gradle-Kotlin 프로젝트 선택해 줍니다
  • 언어는 코틀린으로 진행하기 때문에 코틀린으로 선택해 줍니다
  • Spring Boot의 버전에 경우 오늘 기준 (2024.10.27) SNAPSHOT과 RC1이 아닌 것 중에 가장 상위에 있는 버전을 선택해 줍니다. (가장 상위 버전의 경우 개발 중인 부분이 많아 안정성이 떨어지기 때문에 중간에서 안정적인 버전을 선택합니다.)
  • Dependencies의 경우 사용 할 기능들을 추가하는 겁니다. 각각 설명을 대략적으로 진행하면
    • MySQL Driver: MySQL을 사용하고 연결하는데 도움을 준다고 볼 수 있습니다. 만약 다른 데이터 베이스를 사용할 경우 원하는 데이터 베이스를 연결하면 됩니다.
    • Spring Data JPA: 데이터 베이스를 사용하기 위해 연결하고 그 모든 역할을 한다고 보시면 됩니다. MySQL이 아니더라고 다 사용한다라고 보시면 될 것 같습니다.
    • Spring Web: 서버를 구축하고, 그에 맞는 웹을 보여 줄 수 있는 기능이라고 볼 수 있습니다.

원하는 Dependencies를 대략적으로 추가 하였다면 아래 GENETATE를 눌러 파일을 생성하고 압축 파일을 풀어서

IDE(통합 개발 환경. ex: inteliJ IDEA)에서 프로젝트 열기로 여시면 됩니다.


build.gradle.kts 수정사항

build.gradle.kts라는 파일을 보시면 내부에 방금 넣었던 것들이 추가되어 있습니다.

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    runtimeOnly("com.mysql:mysql-connector-j")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

추후에 개발하면서 필요한 부분은 추가적으로 넣어 줄 예정입니다.

 

추가적으로 JPA를 사용하기 위해 allOpen, noArg를 추가해 줍니다.

allOpen {
    annotation("jakarata.persistence.Entity")
}

noArg{
    annotation("jakarta.persistence.Entity")
}

allOpen : plugin.spring에서 Open 해주는 것 외에 추가로 Open 해준다는 내용입니다.

noArg : 매개변수가 없는 생성자를 자동으로 추가해 준다는 내용입니다.


다음은 프로젝트의 성격을 수정하는 부분으로 가보겠습니다.

src > main > recources > application.properties라는 파일을 수정할 건데요.

미리 수정 해두고 스샷을 찍어서 확장자명이 yml입니다

application.properties을 오른쪽 클릭하셔 리펙터링 > 이름 변경으로 들어가 properties을 지우고 yml로 변경해 줍니다.

차이는 자세하게 모르나 저는 이게 보기 편해서 이렇게 진행합니다

 

server:
  port: 8080
  servlet:
    context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{주소:포트번호}/{스키마 이름}?serverTimezone=Asia/Seoul
    username: {유저 이름}
    password: {패스워드}
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        show_sql: false
        highlight_sql: true
      open-in-view: true
logging:
  pattern:
    console: "[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n"
  level:
    org:
      hibernate:
        SQL: debug
        type.descriptor.sql: trace

이렇게 수정했습니다.

참고한 코드는 인프런의 김대디님의 강의를 참고하였습니다.

  • server : 서버의 기본적인 사항을 수정합니다. 포트번호의 경우 8080을 사용하고 있지만 이미 사용 중이거나, 다른 포트번호를 희망한다면 변경하셔도 무방합니다.
  • spring: 스프링에서의 사항을 수정합니다. 
    • datasource: 데이터베이스에 대한 항목을 추가해 줍니다. 해당 내용은 MySQL을 기준으로 작성되었습니다.
    • jpa: 스프링에서 데이터베이스의 연결에 대한 항목입니다. 지금은 개발단계이기 때문에 ddl-auto: create지만 추후에 배포단계에서는 변경해야 할 부분입니다. 이 부분은 추후에 작성해서 올리겠습니다.
  • logging: 서버실행 시 로그에 대한 변경 사항을 수정합니다.

이렇게 초반 설정을 마쳤고요. 다음 글부터는 회원가입부터 쭉 필요한 기능을 만들어보겠습니다.

부족한 글 읽어 주셔서 감사합니다.

 

피드백은 언제든 환영입니다.