개발 중 하나의 리스트를 다양하게 필터해서 다음 처리를 진행하는 로직을 구현했던 적이 있습니다. 이때 같은 리스트를 대상으로 여러가지 연산, 필터 등이 다양한 곳에서 사용되는 것을 보고 선배 개발자분께서 "일급 컬렉션"을 사용하면 훨씬 좋은 코드가 될 것 같다는 조언을 해주셨습니다. 그래서 해당 코드를 일급 컬렉션을 사용하여 개선한 경험에 대해 적어보고자 합니다. 일급 컬렉션 (First Class Collection) 클래스가 컬렉션을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태를 말합니다. 예를 들면 다음과 같은 리스트가 있다고 할 때 List applicants = new ArrayList(); for (String name : names) { applicants.add(new Ap..
회사에서 최근 데이터를 블록체인에 저장하려고 하면서 관련된 새로운 API 서버와 연동을 해야하는 작업을 진행했었습니다. 기존 로직과 동일하긴 하지만 부분 부분 수정이 필요하였고 그러다보니 재개발 수준까지 가게 된 것 같습니다... 이쯤되니 잘 모르긴 해도 신규 개발에 맞는 아키텍처가 필요했고 클라이언트, 외부 서비스와 연동하면 자주 변경되는 요청, 응답 부분과 비즈니스 로직을 분리할 필요를 더 절실하게 느끼게 되었습니다. 그래서 새로운 아키텍처를 고민하던 중 헥사고날 아키텍처를 알게 되었고 이를 적용해본 과정에 대해 적어보려고 합니다. 헥사고날 아키텍처 (Hexagonal Architecture) 사전적 의미로는 "육각형 건축물"을 뜻하는 헥사고날 아키텍처(=포트와 어댑터 아키텍처(Ports and Ad..
최근 회사에서 API 문서를 Spring Restdocs 로 작성하고 있습니다. 이를 사용하여 일반적인 요청,응답은 작성을 하고 있었는데 추가로 요청 사항이 있었고 이를 개선한 과정에 대해 적어보려고 합니다. (Spring Restdocs 적용을 위한 초기 설정 + 아래 내용 코드는 여기를 참고해주세요!) 가장 큰 요청 사항은 Enum 값을 확인하기 어렵다는 것이었습니다. 현재 진행하는 프로젝트에서는 다양한 코드값들을 Enum으로 사용하고 있었는데 일반적인 요청, 응답을 보면 description 영역에 모든 값들이 표시되지 않아 별도 문서를 확인해야 하는 불편함이 있었습니다. 이를 해결하기 위해 enum 값을 별도로 확인할 수 있는 api를 생성하고 조회할 수 있도록 하였습니다. 프로젝트 내 모든 en..
Java 9 부터 List 생성 시 List.of() 메소드를 사용할 수 있게 되었습니다. 이를 알게 된 이후로 자주 이 메소드를 사용해서 List 생성을 해왔습니다. 그런데 코딩을 하던 중 이렇게 만든 리스트에 값을 변경( add() 등)하는 일이 생겼는데 다음과 같은 에러가 발생했습니다. Exception in thread "main" java.lang.UnsupportedOperationException 해당 연산을 지원하지 않는다는 것으로 해서는 안되는 연산을 해서 발생한 에러였습니다... List.of() 메소드를 살펴보니 다음과 같았습니다. static List of(E e1) { return new ImmutableCollections.List12(e1); } of 메소드는 불변 컬렉션 생성..
제대로된 동작 방식을 이해하지 못하고 두 Annotation을 사용해서 발생했던 이슈가 있어서 기록용으로 남겨둡니다... 먼저 String으로 들어오는 날짜를 LocalDateTime으로 받기 위해서 @JsonFormat을 사용하였습니다. https://jojoldu.tistory.com/361 https://velog.io/@zooneon/Java-ObjectMapper%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-JSON-%ED%8C%8C%EC%8B%B1%ED%95%98%EA%B8%B0 그리고 RequestBody로 받는 객체에 @Builder 패턴을 적용하였습니다. https://esoongan.tistory.com/82 @Builder를 사용하니 @JsonFo..
- Total
- Today
- Yesterday
- CodeCommit
- spring
- map
- EC2
- 수학
- 순열
- Combination
- array
- Algorithm
- permutation
- AWS
- Baekjoon
- cloudfront
- 조합
- DFS
- 프로그래머스
- java
- sort
- CodeDeploy
- string
- ECR
- search
- BFS
- 소수
- CodePipeline
- Dynamic Programming
- programmers
- ionic
- SWIFT
- 에라토스테네스의 체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |