분류 전체보기154 [Spring with Kotlin] sealed class로 다양하게 요청 받기 예제 코드는 여기에서 확인할 수 있다. 서버 API를 만들다보면 동일한 리소스에 대해 다른 요청 파라미터를 받아야할 때가 있다. 기본적인 파라미터는 동일하지만 리소스의 타입에 따라 다른 파라미터를 추가적으로 받아야할 때 sealed class를 활용하여 하나의 리소스에 대한 다양한 요청 DTO를 관리할 수 있다. 예를 들어 유저를 등록하는 API가 있다고 하자. 기본적으로 서비스에서 가입 시 유저로부터 이름, (로그인 ID로써)이메일, 비밀번호를 받아야한다면 요청 파라미터는 다음과 같은 data class로 나타낼 수 있을 것이다. data class UserSignUpRequest( @field:NotBlank val name: String, @field:Email val email: String, @.. 2022. 1. 28. 스터디 회고 - 스프링 핵심 원리 기본편 오늘부로 약 3달간 진행했던 스프링 핵심 원리 기본편 스터디를 끝냈다. (예제 코드는 여기) 이전에 취업을 위해 학원 다니던 시절에 같은 조로 만나 연을 이어가고 있는 친구들과 같이 스터디를 하였는데 알기 지낸지 오래되기도 하였고 나를 포함하여 모두 같은 학원에 다녔고 SI도 경험해보며 경력을 쌓았기 때문에 여러가지 공감대가 많아 스터디를 진행하고 얘기하는 것이 보다 수월했던 것 같다. (그리고 전에도 같이 스프링 클라우드 스터디를 했어서 이미 합을 한 번 맞췄었다) 스터디는 기본적으로 인프런의 강의를 바탕으로 추가적으로 내가 관련하여 알고있는 부분과 경험을 덧붙인 내용으로 강의형 스터디로 진행되었고, 내가 내용을 설명하고 관련하여 질문을 답변하고 서로 경험을 이야기 하는 식으로 순서가 진행되었다. 이번.. 2022. 1. 16. @Profile 대신 @Conditional로 유연하게 Bean 등록하기 @Profile을 사용하면 spring.profiles.active에 따라 Bean을 등록하거나 하지않거나 할 수 있다. 하지만 @Profile은 String 값을 입력받기 때문에 하드 코딩으로 인해 일괄 변경이 힘들 때가 있고, 여러 profile 조건이 붙는 경우 스프링에서 처리할 수 있는 문법을 알아야하는 등 불편한 점이 있다. 그래서 개인적으로 @Profile을 사용하기 보다는 @Conditional을 사용해서 profile 별 Bean 등록 처리하는 것을 선호한다. 이번 포스팅에서는 @Conditional과 이를 사용하여 @Profile을 대체하는 방법에 대해 알아보자. 예제 코드는 여기에서 확인할 수 있다. @Conditional 먼저 @Conditional 에 대해 알아보자 @Conditio.. 2022. 1. 1. Arrow Core: Tutorials - Functional Error Handling (작성 중) Functional Error Handling 함수형 에러 핸들링 https://arrow-kt.io/docs/patterns/error_handling/ Λrrow Functional companion to Kotlin's Standard Library arrow-kt.io When dealing with errors in a purely functional way, we try as much as we can to avoid exceptions. 순수한 함수형 방식으로 에러를 처리할 때, 예외들을 피할 수 있게 최대한 노력한다. Exceptions break referential transparency and lead to bugs when callers are unaware that they may.. 2021. 12. 31. 팀에도 보이스카우트 규칙을 지키도록 하자 클린코드에서 엉클 밥은 보이스카우트 규칙과 코드를 결합시켜 설명한다. The Boy Scout Rule : "Always leave the campground cleaner than you found it." 개발자로서 코드에 보이스카우트 규칙을 적용하는 것도 물론 좋지만, 더 나아가 같이 협업을 하는 팀의 일원으로서 이를 팀에도 적용해도 좋다고 생각한다. 팀이 겪고있는 문제를 개선한다는 것은 어쩌면 큰 일을 해야할 것 같이 거창해 보이지만 작은 노력으로도 충분히 개선할 수 있다. 애플리케이션 에러 트래킹이 힘들어 매번 뒤늦게 오류를 발견하는 경우 Sentry 등의 에러 트래킹 툴을 적용하고 Slack과 연동하여 오류를 빠르게 탐지하고 고칠 수 있다. (Sentry 클라우드 서비스를 사용하면 코드 몇 줄.. 2021. 12. 19. Spring Data JPA - Write, Read Only 분리 적용하기 - 2. 무력화 되는 경우 이전 포스팅을 통해 Spring Data JPA를 사용하면서 AbstractRoutingDataSource, LazyConnectionDataSourceProxy를 사용하여 Write, Read Only DB를 분리하여 사용하는 방법의 원리를 알아보았다. 그럼 이 설정을 무력화하려면 어떻게 하면될까? 앞서 봤던 설정의 핵심은 LazyConnectionDataSourceProxy를 사용하여 DataSource로 부터 Connection을 가져오는 타이밍을 늦추는 것이었다. 그럼 이를 무력화 할 수 있는 방법은 Transaction이 시작되자마자 DataSource로부터 Connection을 가져와 이를 직접 사용하게 만드는 것이다. 이러한 방법 중에 당장 테스트해볼 수 있는 방법은 기존 설정에 p6spy를.. 2021. 12. 18. 이전 1 ··· 13 14 15 16 17 18 19 ··· 26 다음