본문 바로가기

전체 글361

[spring 11편] spring boot test h2 sequence, function 테스트 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. [spring 11편] spring boot test h2 sequence, function 테스트 Spring boot h2 환경에서 function 사용 방법 spring boot test (h2 inmemory 환경) 를 작성하는 도중 function 을 테스트해야할 때가 있습니다. 그럴 때 어떻게 function 을 테스트 하는지 정리했습니다. 아래 예제는 nativeQuery (oracle, mysql) 을 사용했을 때, H2 에서는 function 을 어떻게 사용할 수 있는지에 대해 정리했습니다. Source reference http://www.h2database.com/html/features.h.. 2022. 8. 29.
[spring 10편] application.yml parsing 정리 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. [spring 10편] application.yml parsing 정리 application.yml 파싱 application.yml 사용자가 작성한 properties 를 파싱하는 방법을 정리했습니다. application.yml 으로 작성한 것들을 @Value 와 @ConfigurationProperties 등을 통해 변수로 세팅이 가능합니다. Source 2022. 8. 29.
[개발자유주제 1편] 데이터 동시성 접근 문제가 발생했을 때 해결 방안 (DB lock, Redis) 목차는 개발자유주제 에 있습니다. [개발자유주제 1편] 데이터 동시성 접근 문제가 발생했을 때 해결 방안 (DB lock, Redis) 데이터 동시성 접근 문제란? 쇼핑몰에서 '맥북' 상품을 3개 팔고 있다고 가정하겠습니다. '맥북' 을 살려고 동시간대에 수십, 수백개의 요청이 들어왔다고 가정을 해보면 동시성 접근에 대한 대처가 안돼있다면 '맥북' 재고는 3개이지만 3개 이상의 주문 처리가 될 수도 있고, 1개만 주문 처리가 될 수도 있습니다. 이는 DB 트랜잭션에 대한 문제이며, Oracle 의 경우 READ Commited 로 트랜잭션 격리수준이 기본 값으로 설정돼있습니다. 트랜잭션 격리수준에 관한 것은 상세히 설명한 글들이 많으니 스킵하겠습니다. 이러한 트.. 2022. 8. 24.
[MSA 4편] Service Discovery (Eureka) 목차는 MSA 에 있습니다. 나중에 찾아보기 위해 정리했습니다. 내용을 계속해서 추가할 예정입니다. [MSA 4편] Service Discovery (Eureka) Service Discovery 란? MSA 환경에서는 도메인 별로 서버가 나뉘기에 서버가 추가되거나 삭제되는 등의 작업이 빈번하게 발생합니다. 그에 따라 매번 소스에 하드코딩해서 서버 정보(IP, PORT 등) 을 변경할 수는 없습니다. Service Discovery 는 도메인 별 서버 정보를 가지고 있는 상태에서 클라이언트에서 특정 서비스를 요청할 때, IP 와 PORT 를 제공합니다. Eureka Service Discovery 중 하나인 소프트웨어 입니다. 특정 서비스에 대한 서버 정보들을 관리하여 로드밸런싱 및 장애 처리 기능을 가.. 2022. 8. 20.
[spring batch 2편] FlatFileItemWriter Fixed length format 정리 (Header, Footer 사용) source 는 Github 에 있습니다. 목차는 spring batch 목차 에 있습니다. [spring batch 2편] FlatFileItemWriter Fixed length format 정리 (Header, Footer 사용) 파일을 쓸 때, Fixed length 와 Formatter 를 조합하는 예제에 대해서 정리했습니다. DTO to FixedLength format 으로 변환해서 파일을 쓰는 예제입니다. 파일을 쓸 때, Java 의 Formatter 를 사용할 수 있습니다. Source 아래 예제에서 formatted() 옵션을 주면 Java 의 Formatter 를 사용할 수 있습니다. 자바의 Formatter 는 링크 를 참고하시면 됩니다. Formatter 를 이용한다면 왼쪽 정렬,.. 2022. 8. 18.
[spring batch 1편] spring batch processor, Writer 에서 sequence 를 mybatis 를 통해 여러 번 가져왔을 때, 같은 값이 나오는 경우 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [spring batch 1편] spring batch processor, Writer 에서 sequence 를 mybatis 를 통해 여러 번 가져왔을 때, 같은 값이 나오는 경우 현상 spring-batch chunked tasklet 의 processor 또는 Writer 에서 sequence 를 mybatis 를 통해 nextval 로 여러 번 가져왔을 때, 같은 값이 나오는 경우가 발생했습니다. 원인 같은 트랜잭션일 경우에만 이런 현상이 나옵니다. sequence.nextval 을 가져올 때, 서버 쪽에 commit 명령어를 날려줘야 다음 값을 가져오도록 세팅되는 것이라 추정하고 있습니다. 해결방안 mapper.. 2022. 8. 10.