@JsonTypeInfo 활용 사례와 예제
·
개발중/Spring Boot
@JsonTypeInfo란?@JsonTypeInfo는 Jackson 라이브러리에서 다형성(Polymorphism) 직렬화와 역직렬화를 지원하기 위해 사용되는 애너테이션입니다.객체지향 프로그래밍에서 상속 구조를 가지는 클래스 계층이 있을 때, 상위 클래스 타입으로 선언된 필드에 여러 하위 클래스의 객체가 저장될 수 있습니다.이러한 상황에서 객체를 JSON으로 직렬화할 때, 단순히 필드 값만 기록하면 역직렬화 시 원래의 구체적인 클래스 정보를 알 수 없습니다.@JsonTypeInfo는 이 문제를 해결하기 위해, JSON 데이터에 타입 정보를 포함시켜 저장함으로써, 역직렬화 시 원래의 하위 클래스로 복원할 수 있도록 도와줍니다.주요 속성은 다음과 같습니다:use: 타입 식별자(strategy)를 지정합니다.예..
package javax.xml.bind does not exist 해결
·
개발중/Spring Boot
요즘 대부분의 프로젝트들은 jdk 11 / 17 버전을 사용하는데A 프로젝트는 JDK 1.8 이었다. 오랜만에 A 프로젝트를 오픈하니 아래와 같이 bind 패키지를 찾지 못했다. package javax.xml.bind does not exist 인텔리 제이의 jdk 설정을 확인하니 17 로 세팅되어있는 부분들도 있었다. 그 부분들을 1.8 으로 변경하니 해결 되었다. 그래도 안된다면 ,,, 캐시를 무효화 ( File > Invalidate Caches / Restart ) 시켜보자.
Java: MAC Address 조회하기 예제
·
개발중/Spring Boot
IP 구하는 메서드 구현 public static String getIpAddress(HttpServletRequest request) { String ipAddress = ""; try{ if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { return ipAddress = request.getRemoteAddr(); } }catch (Exception e){ e.printStackTrace(); }finally { return ipAddr..
Spring Cache 이해하고 사용하기: 성능 최적화를 위한 데이터 캐싱 도구
·
개발중/Spring Boot
Spring Cache란Spring Cache는 캐싱을 쉽게 구현할 수 있도록 하는 Spring의 추상화 레이어입니다. 이를 통해 애플리케이션은 특정 데이터를 메모리, 디스크, Redis, Ehcache 등 다양한 캐시 저장소에 저장하고 재사용할 수 있습니다. Spring Cache 주요 개념캐싱 메커니즘캐시 저장소: 데이터를 임시로 저장하는 공간(예: ConcurrentHashMap, Redis).캐시 키: 데이터를 식별하기 위한 고유 키.캐시 값: 캐시에 저장된 실제 데이터. 주요 어노테이션Spring Cache는 주로 어노테이션 기반으로 작동한다. @EnableCaching캐시 기능을 활성화한다.보통 Spring Boot의 메인 클래스나 구성 클래스에 선언한다.@SpringBootApplicatio..
ApplicationListener 를 이용해서 어플리케이션 기동시 에러날 경우에 대처하기.
·
개발중/Spring Boot
개요CI/CD 환경에서 애플리케이션을 배포할 때는, 수동 배포와 달리 애플리케이션 기동 중 발생하는 에러를 즉각적으로 파악하기 어려울 수 있습니다. 수동 배포의 경우, 직접 로그를 확인하며 에러를 바로 인지할 수 있지만 CI/CD 파이프라인을 통해 자동화된 배포가 이루어질 때는 이를 실시간으로 감지하고 대응하기가 쉽지 않습니다. 이러한 상황을 해결하기 위해, 애플리케이션이 기동 중에 에러가 발생하면 즉시 알림을 받을 수 있도록 설정할 수 있습니다. ( 물론 다양한 방법이 있지만 그중에 하나 입니다. ), 이를 위해 Spring의 ApplicationListener와 ApplicationFailedEvent를 활용할 수 있습니다. ApplicationFailedEvent는 애플리케이션 로딩 중 예외가 발..
Mono와 Flux의 차이점과 활용법 - Spring WebFlux
·
개발중/Spring Boot
Flux와 MonoSpring WebFlux의 Flux와 Mono는 반응형 프로그래밍 모델의 두 가지 주요 구성 요소입니다. Mono Mono는 0 또는 1개의 요소를 비동기적으로 제공하는 Publisher입니다. 단일 값 또는 빈 값의 비동기 처리를 나타냅니다.Mono mono = Mono.just("Hello, Mono!");mono.subscribe(System.out::println); Flux Flux는 0개 이상의 요소를 비동기적으로 제공하는 Publisher입니다. 여러 값의 스트림을 처리할 때 사용됩니다.Flux flux = Flux.just("Hello", "Flux", "World!");flux.subscribe(System.out::println); 예제 코드 Mono 예제Mono..
Spring Boot 3와 WebClient: 비동기식 HTTP 요청을 쉽게 구현하기
·
개발중/Spring Boot
WebClient Spring Boot 3에서 WebClient는 비동기 및 동기식 HTTP 요청을 수행하기 위해 사용되는, 강력하고 유연한 HTTP 클라이언트입니다. WebClient는 Spring 5에서 처음 도입되었으며, Spring Boot 2.x 및 3.x에서도 계속해서 사용되고 있습니다. 이는 Spring의 기존 RestTemplate을 대체하는 역할을 수행하며, 비동기식 API 호출을 더욱 간편하게 구현할 수 있도록 합니다. 주요 특징 비동기 및 동기식 요청WebClient는 비동기식과 동기식 요청을 모두 지원합니다.반응형 프로그래밍 지원WebClient는 Reactor 라이브러리를 기반으로 하여, 반응형 스트림을 활용한 비동기 프로그래밍을 지원합니다.플러그인 아키텍처요청 및 응답을 변환하..
Spring Project 의 MyBatis 쿼리를 Console 에 찍는 설정 (log4j2)
·
개발중/Spring Boot
의존성 추가 - 로그 관련 라이브러리를 추가합니다. org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 log4j2 파일 - resource 하위에 log4j2.xml 파일을 생성합니다. - 파일 안에 아래와 같이 코드를 작합니다. DataBase 접속 정보에 대한 수정 변경 전 spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/binsoo_db?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.hikari.username..