no image
[Spring] 컬럼이 많은 상황에서 Reflection 시 ConversionService 활용해보기
배경회사에서 100개가 넘는 컬럼들을 다루어야 하는 경우가 있었다.100개가 넘는 컬럼들 중 섹션별로 일부의 데이터를 추가하거나 수정할 수 있어야 했고, 기존의 데이터와 서로 다른지 판단할 수 있어야 하며 이를 로그로도 남겨야 하는 요구사항이 있었다. 예를 들면 Entity 가 아래와 같은데, @ExampleSection 이라는 Annotation 으로 섹션을 분리한 뒤 사용자가 원하는 Section 별로 데이터를 저장하거나 수정할 수 있어야 하는 것이다.@Entity(name = "exampleEntity")@Table(name = "EXAMPLE_ENTITY", schema = "GREATSCHEMA")@DynamicInsert @DynamicUpdate@Builder@Getter@NoArgsCons..
2022.11.21
[ERROR] Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)
오류 내용 Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?) 해결 방안 말 그대로 JSON 으로 변환할 때 Map 객체는 허용하지 않는 의미이다. 아래처럼 Map 인터페이스를 그대로 사용하면서 JSON 으로 직렬화할 때 위와 같은 오류가 생길 수 있다. @Builder @Getter @NoArgsConstructor @AllArgsConstructor public class PostKafkaProxyResponse { private String topic; private int partition; private long offset; private long timestamp; p..
2022.08.02
no image
[Spring] @ModelAttribute 파라미터에서 사용 방법 및 원리
@ModelAttribute 는 클라이언트로부터 일반 HTTP 요청 파라미터나 multipart/form-data 형태의 파라미터를 받아 객체로 사용하고 싶을 때 이용된다. 사용 방법 @ModelAttribute 는 parameter, method 레벨로 두 가지의 방식을 지원하고 있다. @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ModelAttribute { ... } @ModelAttribute 를 이용할 DTO 클래스에서는 아래처럼 생성자를 구현해도 사용할 수 있다. 단, 요청 파라미터와 매개변수 이름이 서로 같아야 한다. pack..
2022.07.30
no image
[Linux] Mac 에서 OpenJDK 17 설치하기 (Homebrew)
아래 명령어를 입력해서 다운로드한다. $ brew install openjdk@17 나타나는 화면에서 다운로드할 때 어떤 버전을 다운로드받고 있는지 확인할 수 있다. 또한 다운로드 후 사용자가 할 수 있는 작업들에 대해서 친절하게 명령어와 함께 설명을 해준다. 시스템에서 openjdk 17 을 찾을 수 있도록 아래 명령어를 입력하여 진행한다. $ sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk zsh 을 이용할 경우 아래처럼 명령어를 입력하여 PATH 에 대해서도 같이 추가해준다. $ echo 'export PATH="/opt/homebrew/opt/ope..
2022.07.27