안녕하세요, 마리오입니다 :)
Auth 영역 개발 처음은 스프링부트 프로젝트 구성입니다. 스프링 공식 문서에 있는 가이드를 참고하였습니다.
새 프로젝트 만들기
가이드 문서에 나온대로 Spring Initializr를 사용하여 프로젝트를 생성해보겠습니다. IntelliJ에도 통합되어 있어 IDE에서 명령줄이나 웹 UI를 사용하지 않고도 새 프로젝트를 만들고 가져올 수 있다고 하네요.
https://start.spring.io/#!language=kotlin&type=gradle-project-kotlin링크에 접속하여 언어를 Kotlin
, 빌드 도구를 Gradle - Kotlin
으로 설정하겠습니다.
그 외 설정은 starter.spring.io의 기본 설정으로 유지하고, Dependencies만 필요한것을 추가하여 사용하겠습니다.
- Spring Web
- Spring Data JPA
- H2 Database
- Spring Boot DevTools
- Spring Security
- Redis
Persistence with JPA
Kotlin
에서는 무분별한 상속을 막기 위해 기본적으로 모든 클래스는 기본 변경자가 final
로 처리됩니다. Hibernate
의는 이러한 규칙을 강요하지않아 final entity
를 받더라도 에러가 발생하지는 않지만, JPA
와 관련된 클래스와 프로퍼티들은 반드시 open
되어야 합니다(KT-28525).
이에 따라 final
로 해석되는 Kotlin Class
를 그대로 활용할 경우 lazy fetching
에 활용되는 Proxy
가 정상적으로 동작하지 못해 eager fetching
으로 처리되어 데이터 조회시 성능 이슈를 발생 시킬 수 있습니다.
이러한 문제는 allopen
플러그인을 통해 해결 가능하므로, 플러그인 관련 코드를 build.gradle.kts
추가해주겠습니다.
|
|
kapt
kapt(Kotlin Annotation Processing Tool)
는 Kotlin
에서 어노테이션 프로세서(annotation processor)를 실행하고 처리하는 도구로써 Kotlin
으로 어노테이션을 작성하고 실행하기 위해 사용됩니다.
Kotlin
에서는 애플리케이션 프로퍼티를 사용할 때 읽기 전용 프로퍼티 사용을 권장하는데, 커스텀 프로퍼티는 IDE에서 인식하지 못하기 때문에 메타데이터 생성을 위해 spring-boot-configuration-processor
종속성을 이용하여 Kapt를 구성해야한다고 하네요.
마찬가지로 build.gradle.kts
에 관련 설정을 추가하겠습니다.
|
|
- “설정 > 플러그인” 에서
Spring Boot
플러그인이 활성되어 있는지 확인 - “설정 > 빌드, 실행, 배포 > 컴파일러 > 어노테이션 프로세서” 에서 어노테이션 처리 활성화
- 터미널에서
./gradlew kaptKotlin
명령 실행하여 메타데이터 생성
끝으로
프로젝트를 생성하고 기본적으로 필요한 구성은 모두 끝난 것 같습니다. 다음 차례 부터는 구현이되겠네요!
끝까지 읽어주셔서 감사합니다 :D