refactor: Global, 도메인, QueryDSL 레포지토리 전반 Kotlin 마이그레이션(#131)#133
Open
chaiminwoo0223 wants to merge 1 commit intodevelopfrom
Open
refactor: Global, 도메인, QueryDSL 레포지토리 전반 Kotlin 마이그레이션(#131)#133chaiminwoo0223 wants to merge 1 commit intodevelopfrom
chaiminwoo0223 wants to merge 1 commit intodevelopfrom
Conversation
* feat: DateUtil.kt, FilenameUtil.kt, OriginArgumentUtil.kt 구현 * feat: HardDeleteTasklet.kt, BatchJobScheduler.kt 구현 * feat: CustomException.kt 구현 * feat: ErrorCode.kt, CommonErrorCode.kt 구현 * feat: ErrorResponse.kt, FieldErrorResponse.kt 구현 * feat: GlobalExceptionHandler.kt, ValidationExceptionHandler.kt 구현 * feat: CacheNameConstants.kt, CacheKeyConstants.kt, CookieConstants.kt, UrlConstants.kt, BatchConstants.kt 구현 * feat: CacheKeyFactory.kt 구현 * feat: StandardResponse.kt 구현 * feat: OriginExtractionFilter.kt, JwtAuthenticationFilter.kt 구현 * feat: SecurityResponseHandler.kt, CustomAccessDeniedHandler.kt 구현 * feat: CustomAuthenticationEntryPoint.kt 구현 * feat: WebSecurityConfig.kt, WebClientConfig.kt, SchedulerConfig.kt, RedisConfig.kt, RedisCacheConfig.kt, SwaggerConfig.kt 구현 * feat: JpaAuditingConfig.kt, QuerydslConfig.kt, S3Config.kt, TikaConfig.kt, CdnConfig.kt 구현 * feat: BatchJobScheduler.kt, BatchStepConfig.kt 구현 * feat: PomodoroQueryRepository.kt, PomodoroCommandRepository.kt 구현 * feat: StudyLogDailyMissionQueryRepository.kt, StudyLogDailyMissionCommandRepository.kt 구현 * feat: MissionQueryRepository.kt, MissionCommandRepository.kt 구현 * feat: DailyMissionQueryRepository.kt, DailyMissionCommandRepository.kt 구현 * feat: StampQueryRepository.kt, StampCommandRepository.kt 구현 * feat: TripQueryRepository.kt, TripCommandRepository.kt, DailyGoalCommandRepository.kt 구현 * feat: TripReportQueryRepository.kt, TripReportCommandRepository.kt, TripReportStudyLogCommandRepository.kt 구현 * feat: MemberQueryRepository.kt, MemberCommandRepository.kt 구현 * feat: TokenProperties.kt, KakaoOauthProperties.kt, RedisProperties.kt, SwaggerProperties.kt 프로퍼티 추가 * feat: S3Properties.kt, CdnProperties.kt 프로퍼티 추가 * feat: BaseTimeEntity.kt 구현 * feat: Pomodoro.kt, StudyLog.kt, StudyLogDailyMission.kt 구현 * feat: Mission.kt, DailyMission.kt, Stamp.kt 구현 * feat: Trip.kt, TripCategory.kt, DailyGoal.kt 구현 * feat: TripReport.kt, TripReportStudyLog.kt 구현 * feat: Member.kt, MemberCategory.kt, MemberRole.kt, SocialProvider.kt 구현 * feat: EntityExtentions 유틸 클래스를 구현하여, 엔티티 ID nullable 처리를 위한 requireId 확장 함수 추가 * feat: PomodoroQueryRepositoryAdapter.kt, PomodoroCommandRepositoryAdapter.kt 구현 * feat: MemberQueryRepositoryAdapter.kt, MemberCommandRepositoryAdapter.kt 구현 * feat: StudyLogQueryRepositoryAdapter.kt, StudyLogCommandRepositoryAdapter.kt 구현 * feat: StudyLogDailyMissionQueryRepositoryAdapter.kt, StudyLogDailyMissionCommandRepositoryAdapter.kt 구현 * feat: MissionQueryRepositoryAdapter.kt, MissionCommandRepositoryAdapter.kt, DailyMissionQueryRepositoryAdapter.kt, DailyMissionCommandRepositoryAdapter.kt 구현 * feat: StampQueryRepositoryAdapter.kt, StampCommandRepositoryAdapter.kt 구현 * feat: TripQueryRepositoryAdapter.kt, TripCommandRepositoryAdapter.kt, DailyGoalCommandRepositoryAdapter.kt 구현 * feat: TripReportQueryRepositoryAdapter.kt, TripReportCommandRepositoryAdapter.kt, TripReportStudyLogCommandRepositoryAdapter.kt 구현 * feat: MemberQueryRepositoryAdapter.kt, MemberCommandRepositoryAdapter.kt 구현 * refactor: ErrorCode 구현체를 프로퍼티 override 방식으로 변경하고 get 메서드 제거 * refactor: Java 설정 제거 및 Kotlin + QueryDSL(kapt) 기반으로 빌드 구성 전환 * test: PomodoroFixture.kt를 불변 생성자 기반 구조로 변경 * test: StudyLogFixture.kt를 불변 생성자 기반 구조로 변경 * test: MissionFixture.kt 불변 생성자 기반 구조로 변경 * test: StampFixture.kt 불변 생성자 기반 구조로 변경 * test: TripFixture.kt, DailyGoalFixture.kt, TripReportFixture.kt 불변 생성자 기반 구조로 변경 * test: CreatePomodoroRequestFixture.kt를 불변 생성자 기반 구조로 변경 * test: ConfirmStudyLogImageRequestFixture.kt, CreateStudyLogRequestFixture.kt, PresignStudyLogImageRequestFixture.kt를 불변 생성자 기반 구조로 변경 * test: CreateMissionRequestFixture.kt, UpdateMissionRequestFixture.kt 불변 생성자 기반 구조로 변경 * test: CreateStampRequestFixture.kt, UpdateStampRequestFixture.kt, UpdateStampOrderRequestFixture.kt 불변 생성자 기반 구조로 변경 * test: CreateTripRequestFixture.kt, CreateDailyGoalRequestFixture.kt, CreateTripReportRequestFixture.kt 불변 생성자 기반 구조로 변경 * test: UpdateTripRequestFixture.kt, UpdateDailyGoalRequestFixture.kt 불변 생성자 기반 구조로 변경 * test: PresignTripReportImageRequestFixture.kt, ConfirmTripReportImageRequestFixture.kt 불변 생성자 기반 구조로 변경 * chore: StudytripApplication.kt, StudytripApplicationTests.kt 추가 * chore: main java 패키지 삭제 (Kotlin 마이그레이션 완료) * chore: test java 패키지 삭제 (Kotlin 마이그레이션 완료) * chore: build.gadle에 commons-lang3 3.20.0 추가 (전이 의존성 CVE 대응) * chore: build.gradle에서 Lombok 의존성 및 설정 제거 * fix: SpEL 호출 오류 해결을 위해 CacheKeyFactory 메서드에 @JvmStatic 추가
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 작업 내용 및 특이사항
✅ 변경 범위가 커진 이유
엔티티 ID(nullable)처리 방식 차이로 인해 도메인, Repository, 테스트 코드 전반에 걸쳐 수정이 발생했습니다.추가/변경된 핵심 로직 위주로 리뷰해주시면 감사하겠습니다.✅ Java → Kotlin 전환의 핵심 변화 (ID 처리 방식 차이)
Long id를 전제로 사용하는 코드가 다수 존재했습니다.var id: Long? = null구조를 사용하게 되면서,엔티티 ID nullable 처리 방식의 명시적 관리가 필요해졌습니다.EntityExtensions.requireId()확장 함수를 도입하여, 엔티티 ID를 사용하는 지점에서 명시적으로 null 여부를 검증하도록 개선했습니다.✅ ErrorCode 구현체에서 get 메서드 제거 → 프로퍼티 override 방식으로 리팩토링
getCode(),getMessage()와 같은 getter 메서드 중심 구조를 사용하고 있었습니다.override val방식으로 직접 구현하도록 구조를 변경했습니다.하위 도메인(Member, Auth, Image 등)의 ErrorCode 구현체에서도 동일한 기준을 적용하여, get 메서드를 모두 제거하고 일관된 구조로 변경했습니다.✅ Kotlin 마이그레이션 완료에 따른
@JvmStatic정리@JvmStatic을 전반적으로 제거했습니다.CacheKeyFactory에서는@JvmStatic을 유지했습니다.✅ QueryDSL 및 도메인 Kotlin 마이그레이션 단계적 수행
Lombok 기반 어노테이션(@RequiredArgsConstructor)을 제거하고, 명시적 생성자를 추가하는 방식으로 구조를 변경했습니다.Kotlin + QueryDSL(kapt)환경으로 완전히 전환했습니다.✅ 테스트 구조 개선 및 ID Nullable 대응 반영
불변 생성자 기반 구조로 전환하여, 테스트 객체 생성 시점의 상태가 변경되지 않도록 개선했습니다.테스트 간 상태 공유 및 사이드 이펙트문제를 제거했습니다.DSL(withXXX) 패턴을 유지하면서도, 생성자 중심 구조로 책임을 명확히 분리했습니다.엔티티 ID nullable구조를 테스트 코드에 반영했습니다.requireId()확장 함수를 기준으로, 저장 이후 ID 사용 시점이 명확히 드러나도록 테스트를 정비했습니다.✅ 애플리케이션 진입점 및 테스트 구성 정비
StudytripApplication을 Java에서 Kotlin으로 전환했습니다.StudytripApplicationTests를 Kotlin 기준으로 재작성했습니다.✅ 공통 유틸 및 전역 지원 모듈 Kotlin 마이그레이션
DateUtil,FilenameUtil,OriginArgumentUtilKotlin 전환CacheNameConstants,CacheKeyConstants,CookieConstants,UrlConstants,BatchConstantsKotlin 전환CacheKeyFactoryKotlin 전환StandardResponseKotlin 전환✅ 전역 예외 처리 Kotlin 마이그레이션
CustomExceptionKotlin 전환ErrorCode,CommonErrorCodeKotlin 전환ErrorResponse,FieldErrorResponseKotlin 전환GlobalExceptionHandler,ValidationExceptionHandlerKotlin 전환✅ Security 및 필터 Kotlin 마이그레이션
SecurityResponseHandler,CustomAccessDeniedHandlerKotlin 전환CustomAuthenticationEntryPointKotlin 전환OriginExtractionFilter,JwtAuthenticationFilterKotlin 전환✅ Config 구성 Kotlin 마이그레이션
WebSecurityConfig,WebClientConfig,SchedulerConfig,SwaggerConfigKotlin 전환RedisConfig,RedisCacheConfigKotlin 전환JpaAuditingConfig,QuerydslConfigKotlin 전환S3Config,TikaConfig,CdnConfigKotlin 전환BatchJobConfig,BatchStepConfigKotlin 전환✅ Batch 및 Cleanup 구조 Kotlin 마이그레이션
BatchJobScheduler,HardDeleteTaskletKotlin 전환HardDeleteExecutor,HardDeleteFacadeKotlin 전환✅ 프로터티 Kotlin 마이그레이션
TokenProperties,KakaoOauthPropertiesKotlin 전환RedisProperties,SwaggerPropertiesKotlin 전환S3Properties,CdnPropertiesKotlin 전환🌱 관련 이슈
🔍 참고사항(선택)
build.gadle에 commons-lang3 3.20.0 추가 (전이 의존성 CVE 대응)build.gradle에서 Lombok 의존성 및 설정 제거 (코틀린 정책)build.gradle에서Java 설정 제거 → Kotlin + QueryDSL(kapt)기반으로 빌드 구성 전환📚 기타(선택)