MVC와 WebFlux에서의 @ReqeustParam Spring MVC Spring MVC에서는 기본적으로 querystring, form-data, multipart 요청에 대해 @ReqeustParam으로 매핑이 가능하다. 이는 서블릿 API에서 querystring, form-data(requestBody)를 parameters map에 같이 바인딩하기 때문이다. RequestParamMethodArgumentResolver.resolveName을 살펴보면 간단하게 로직 확인이 가능하다. Spring Webflux 웹플럭스에서는 querystring에서 대해서만 바인딩을 지원한다. RequestParamMethodArgumentResolver.resolveNamedValue을 살펴보면 간단하게 로..
@JsonView와 @JsonFilter를 사용하여 Partial response 구현하기 개요 JSON HTTP API를 구현할 때, 페이징만 구현하는 경우를 쉽게 볼 수 있는데, 여기서 한 걸음 더 나아가 조금 더 나은 퍼포먼스를 위하여 클라이언트가 필요한 필드만 골라서 받을 수 있도록 구현하는 것이 필요할 수 있다. 예를 들어 아래와 같은 상황을 예를 들어 볼 수 있다. HTTP Reqeust HTTP/1.1 GET /books/1?fields=isbn,title HTTP Response { "isbn": "978-3-16-148410-0", "title": "Book Title" } 책 데이터를 조회하는 JSON API가 있다고 했을 때, 헤당 API에서 제공하는 정보 중 일부 정보만을 클라이언트..
mapStruct Summary & Why? 타입 세이프하게 bean 매핑을 도와주는 어노테이션 프로세서 보통 JPA 기반의 어플리케이션을 개발하게 되면 만나게 되는 DTO 변환 작업은 대부분이 반복적인 작업이 대부분 ModelMapper와 같은 매핑 구현체가 존재하지만, ModelMapper의 경우 리플렉션 기반으로 동작하기도 하고 퍼포먼스에 대한 이슈가 많은편 도메인 객체를 풍부하게 사용하면서, 반환 데이터가 달라지게 될 경우 이를 적절하고 큰 힘을 들이지 않고 매핑할 수 있도록 도와주는 것이 바로 mapStruct mapStruct 역시 메뉴얼에서 확인할 수 있듯이, 편하게 사용하려면 어느정도의 학습 기간을 거쳐야 편하게 사용할 수 있는듯하다. Simple Usage 개발 환경 Kotlin 1.3...
SpringBoot Logger 사내에서 최근 ELK 도입을 준비하고 있는 과정에서 로깅 포맷을 지정하고 사용해야 하는 Needs가 생겨서 이번 작업을 시작하게 되었다. 스프링 부트에서는 로깅 설정을 프로파일별로 다르게 지정 할 수 있으며, 또한 로깅 구현체에 대한 유연한 변경(log4j2 등)이 가능하므로 작업 자체의 난이도가 높지는 않다고 할 수 있다. 다시 보는 로깅 레벨 출처: 구글 이미지 검색 Hibernate Logging 관련 이슈 로깅 작업 중 Hibernate 관련 로깅이 slf4j에 제대로 적용이 안되는 이슈가 생겼었다. 이와 관련된 문서를 뒤져보다 링크를 통하여 해당 문제를 해결 할 수 있었다. 링크의 내용을 요약하자면, 하이버네이트 로깅 설정이 초기화 되는 구간에서 실제 slf4j에..
스프링 부트 배치 #2 - ItemReader 2.1 ItemReader 스프링 배치에서는 상황에 맞는 ItemReader 구현체를 제공 ItemReader는 쓰레드 세이프하지 않기 때문에(Non-Thread-Safe) 쓰레드 간 경합이 발생하지 않도록 주의해야 한다. 스프링 배치에서는 이를 보완하기 위해, SynchronizedItemStreamReader 구현체를 제공하며, 이를 생성할 수 있는 빌더 구현체인 SynchronizedItemStreamReaderBuilder 또한 제공한다. Flat-File, Message-Queue(AMQP), Database(RDBMS, Mongodb) 등의 ItemReader 구현체들이 존재하며, 스프링 배치에서 제공하고 있는 구현체들은 링크를 통해 확인 가능하다..
스프링 부트 배치 #1 - 개요/주요개념 개요 백엔드의 배치 처리 기능을 구현하는 데 사용하는 프레임워크. 부트 배치의 경우, 스프링 배치의 설정 요소들을 간편화시켜 스프링 배치를 빠르고 쉽게 사용할 수 있도록 구성. 배치란, 순차적으로 자료를 처리한다는 뜻으로 일괄 처리와 같은 뜻 Why Spring Batch? 대용량 처리 최적화되어 있고, 고성능을 발휘 로깅. 통계 처리, 트랜잭션 관리 등 필수 기능 지원 예외 및 비정상 동작에 대한 방어 기능 개발자는 Spring Batch 프로그래밍 모델을 사용하여 비즈니스 로직에 집중하고 프레임워크가 인프라를 관리하도록 함. 주의사항 복잡한 구조와 로직을 피해야 함 데이터를 직접 다루는 코드가 많으므로, 무결성을 유지할 수 있는 방어적인 방법을 사용해야 함. ..
- Total
- Today
- Yesterday
- jade
- pm2
- maven
- http method
- Package Control
- HttpClient
- Handlebars
- RestTemplate
- Sublime Text 3
- Spring MVC
- HTTP
- node.js
- 스프링
- implicit prototype chain
- EJS
- package.js
- SideBarEnhancements
- Prototype
- Til
- Express.js
- springboot
- Spring
- cluster
- Spring Boot
- ecma
- tomcat
- Squelize.js
- WebFlux
- Kotlin
- Sublime Text 2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |