일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 소프티어
- Coputer Science
- Service 계층 테스트
- 직장인 회고
- FCM
- Spring
- softeer
- 2025 계획
- Test code
- 공룡책
- 갓생
- JPA
- Test
- Server
- 일상
- db
- MySQL
- 테크쇼
- 자바
- 2024회고
- OS
- mapstruct
- Test Doulbe
- modelmapper
- 인프콘2023
- Java
- enumSet
- ExceptionResolver
- proxyFactory
- Junit 5
- Today
- Total
목록Server (25)
공부내용공유
서론 계층형 아키텍쳐이든 클린 아키텍쳐를 지향하는 어떠한 아키텍쳐이든 보통 패키지를 도메인 별로 분리하는 경우를 많이 보았고, 현재 진행중인 프로젝트도 도메인 별로 패키지가 나눠져 있는 형태이다. 다른 레이어에서의 구현에서는 큰 문제가 없었으나 도메인 레이어를 구현할 때 참 많이 고민된 부분이 있다, 이전 글에서 언급했듯이 value object를 적극적으로 활용하여 코드를 작성중인데 "value object들의 접근 제어자를 어떻게 설정할 것인가" 이다. (이번 글도 정답이 없는 문제를 제 고민과 주변에서의 조언을 글로 정리한 것으로 반박, 의견 제시 해주시면 감사하겠습니다!) 본론 domain 별로 나눴을 때의 장점public 장점package private의 장점본론은 위 항목으로 구성되어..
서론 value object 여러가지 장점이 있고 이를 잘 활용하면 응집도 높고 DRY한 코드를 작성할 수 있다. 그래서 나도 여러군데서 열심히 사용하려고 노력하였고 이 과정에서 여러 애매한 상황들을 많이 만났다, 오늘 글에서는 value object의 null 처리에 관해서 다룰 예정이다. (지극히 개인적인 경험과 자료를 찾아보면서 제 생각등을 정리한 글이니 참고만 하고 반박 의견이 있다면 공유해주세요.) 본론 목차는value object의 nullObjectValue vs Nullable상황에 맞게?으로 구성될 예정이다. Value Object의 null 객체지향적인 코드를 지향하면서 클래스를 만들고 사용하다보면 value object를 자주 사용하게 된다. 관련된 값들, 로직들을 모음으로 ..
서론 테스트 코드를 작성하다 보면 특정 기능을 테스트 하기 위해 그를 위한 여러 객체들을 만들어야 한다, (entity, vo, req...) 그리고 이러한 객체들 중에는 값들을 굉장히 많이 가지고 있거나 반복적으로 사용되는 것들도 있을 것이다. 이러한 테스트 비즈니스 로직과는 상관없는 부분의 노출을 최소화 하고자 TestFixture를 많이들 사용하고 있을거고 나도 잘 사용중이다, 다만 TestFixture들의 위치를 별 생각없이 두고 있었는데 위치에 관련해서 사수님이 의견을 남겨주셔서 해당 내용에 관해 정리할 예정이다. 본론 목차는TestFixture에 관한 간단한 설명TestFixture 위치의 문제TestFixture 위치 문제 해결문제 해결을 하면서 상기한 자바의 기초 내용으로 구성될..
서론 온보딩 프로젝트를 맡으면서 처음 mongoDB를 사용하게 되어서 정신없이 mongoDB의 기본적인 문법과 spring 에서 제공하는 spring mongo jpa, mongoTemplate 만을 공부하고 디테일한 요소를 챙기지 못했었다. java에서 Bson을 위해 ObjectId 라는 객체를 지원한다는 것을 모르고 id는 String 으로만 사용했었고, 시간 관련 작업을 할 때 id를 활용하겠다는 생각을 못하다가 나중에야 알게되었다. 이 글에서는 objectId의 개념과 java에서 지원하는 객체에 대한 설명, id를 시간 관련 기능에서 어떻게 사용할 수 있는지 정리할 예정이다. 본론 ObjectId란? 저장되는 ObjectId의 예시를 보면 ObjectId(6629ad81291d943e5..
서론 프로젝트를 진행하다보면 null을 핸들링 해야하는 다양한 상황을 만난다. 오늘도 null 처리를 어디서, 어떻게, 어디까지 해줄까를 고민하고 팀원 분과 얘기를 하고 있었는데 kotlin의 문법을 null 처리 관련한 연산자를 알려주셨다. 코틀린을 사용해본 적이 없어서 이번 기회에 코틀린에서 지원해주는 null 핸들링 도구가 무엇이고 어떤 장점이 있는지와 내가 고민했던 java에서 null 처리 방법을 정리할 예정이다. 본론 적어도 null 처리 관점에서 가장 이상적인 객체의 설계는 nullable 한 필드가 없게하여 객체를 사용할 때NullPointerException을 피하는 설계라고 생각한다. 하지만 개발을 하다보면 Nullable한 값을 선언하고 (객체의 필드이든 메서드의 파라미터이든) 이를 ..
서론 공부를 하다가 평소에는 딱히 생각 없이 사용하던 HashMap에 일반적인 put, remove와 같은 메서드 뿐만이 아니라 훨씬 더 많은 메서드가 있고 내부적으로 복잡하게 동작하는 클래스라는 것을 알게 되었다. java 8 이후로 (java 8 이전 HashMap도 공부할 것이 많긴 하지만) 구현된 HashMap 클래스에 있는 중요한 내용들을 분석하고 정리하였다. 본론 Node HashMap class 를 열었을 때 가장 먼저 Node 라는 클래스를 볼 수 있다. static class Node implements Map.Entry { final int hash; final K key; V value; Node next; Node(int hash, K key, V value, Node next) {..
서론 프로젝트를 진행하다 보면 Enum은 한번쯤은 꼭 사용하게 되는 타입이다. 맨 처음 프로젝트에서 Enum을 사용할 때는 단순히 열거를 위해서만 사용하고 타입 안정성을 위해서 사용하는구나 하고 넘어갔었는데 다른 프로젝트를 진행하면서 받은 리뷰를 통해 Enum의 다양한 활용법, Enum을 위한 특별한 (java의) 자료구조등을 알게되었다. 이번 글에서는 Enum에 대한 설명보다는 Enum을 어떤식으로 활용할 수 있는지, Enum을 사용할 때 알고있으면 좋은 자료구조에 대해 주로 다룰 예정이다. 본론 Enum 기본 활용 일단 가장 기본적인 Enum 사용법을 보자 public enum Message { NORMAL, ENCRYPTED, ANONYMOUS, RESERVATION, KAKAO } 이렇게 사용했을..
서론 백엔드를 처음 공부하면서 접했던 계층 개념은 가장 흔히 쓰이는 presentation, service, repository 이 3개의 계층으로 나눈 패턴이었다, 입사를 하고나서 개발중인 프로젝트들 중 위 계층들 외에 business 계층을 추가하는 것을 보았고, 집에서 추가로 공부하면서도 business 계층을 사용하는 예시를 보게되었다. 해당 계층을 사용하면서 내가 느꼈을 때 어떤 이점이 있는지 간단하게 정리하고자 이 글을 작성하였다. (다른 장점, 틀린 내용이 있다면 댓글로 얘기해주세요!) 본론 일단 가장 핵심적인 목적은 도메인 로직만 들어있는 service 계층을 만들기 위해서이다. 도메인 로직만을 남김에 따라 인수인계를 할 때 처음 프로젝트를 보는 사람이 도메인 로직을 체력 낭비 없이 빠르게..
서론 프로젝트를 하면서 검색 기능을 구현해야 했다. 기능 구현을 위해 알아봤던 내용을 간단하게 정리하였다. 본문 전문 검색 인덱스(Full Text Search Index) Full-Text-search-index(전문 검색 인덱스)란 많은 형태의 데이터가 있을 때 효율적으로 데이터를 찾는 방법중 하나로 텍스트로 구성된 데이터의 내용을 기반으로 생성한 인덱스이다. 메일, 메세지 내용을 기반으로 검색을 할 때 효율적으로 검색하기 위해 필요하다. MongoDB 전문 검색 인덱 알고리즘 불용어(stop word) 처리 가치 없는 단어를 필터링 주로 대명사, 관사, 전치사, 주요 동사 형태소 분석 검색어로 선정된 단어의 어근을 찾는 작업 처리과정 불용어 처리 there are not droids you are ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6Lb8R/btsqCbaIW5B/C5arWXbZuDu4Fy9fopMkh0/img.png)
서론 현재 진행중인 프로젝트에서는 JWT 토큰으로 인가를 사용하고 있고 Access Token 과 Refresh Token으로 보안을 조금 더 강화시켰다. 로그인 파트를 내가 구현하지는 않아서 처음에는 신경쓰지 않고 있다가 프로젝트 베타 테스트를 하면서 문득 Refresh Token 만으로 보안이 충분한가? 라는 생각이 들었고 여러 자료들을 보고 정리하면서 내 나름의 결론을 내리고 프로젝트 고도화를 할 때 팀원들과 상의할 예정이다. 본론 현재 프로젝트에서는 사용자가 로그인을 하면 Access Token 과 Refresh Token을 만들어 보내주고 클라이언트에서는 Async Storage 에 저장을 하는 형태이다. public String createAccessToken(String account, lo..