파란하늘의 지식창고
반응형
article thumbnail
Spring Custom HandlerExceptionResolver 사용하기
Study/Java 2020. 2. 18. 09:33

Spring Framework 5.2.3.RELEASE, Spring Boot 2.2.4.RELEASE 기준으로 작성됨 Spring webmvc를 사용하는 경우에 대한 설명 Spring Framework를 쓰면 @ExceptionHandler를 사용하여 전역 에러 처리를 한다. (기존 작성한 글 참조) 2019/04/30 - [Study/Java] - Spring Boot 전역 에러 처리 Spring Boot 전역 에러 처리 Spring 5.1.6, Spring Boot 2.1.4 기준 문서 정리 Spring framework는 전역 에러를 처리하기 위해 아래의 인터페이스를 제공한다. 제공되는 interface servlet (webmvc) HandlerExceptionResolver reacitve (..

재미로 보는 Spring Project release train naming
Study/Java 2020. 2. 7. 11:21

Release Train Naming 여러 라이브러리를 묶어서 그룹 단위로 배포하는 프로젝트의 경우 상위 모듈에서 하위 모듈에 대한 버전을 관리하게 된다. 상위 모듈이 만들어지면 이 상위 모듈에 대해서도 버전 관리를 해야 하는데 하위 모듈의 여러 버전을 관리하는 모듈의 버전이기 때문에 release train이라 부르고 상위 모듈의 버전에 대한 release train naming은 보통 알파벳 순서를 많이 쓴다. Spring Project의 release train naming Spring Project의 경우 이런 release train이 여러 묶음이 있다. Spring Data Spring Data의 release train naming은 유명한 컴퓨터 공학자들의 이름을 따서 명명되었다. (rel..

OOP 개발 원칙
Study/Java 2020. 1. 31. 12:55

YAGNI - You aren't gonna need it 당장 필요하지 않은 것은 미리 구현하지 말자. 기능이 실제로 필요하기 전까지는 추가하지 않는 것이 좋다는 익스트림 프로그래밍(XP) 원칙 처음부터 필요 이상의 기능을 추가하면 설계가 복잡해진다. 또한 실제 해당 기능을 사용하려는 시점에 설계에 변경이 생겨 기존 코드를 다시 재작성해야 해서 일이 더 많아지게 되는 경우가 있다. KISS - Keep it simple, stupid 단순하게 하라. 처음부터 복잡하게 준비하지 말아야 한다. 가장 단순한 것이 확장하기 쉬운 것이다. 역할에 맞는 적절한 위치의 코드인지, 단순하고 명료해서 타인이 봐도 이해가 쉽게 되는 지를 고민해야 한다. 이 후에 확장해서 쓰려고 할 때 기존 코드를 고치기 힘들거나 많이 ..

RestTemplate Generic responseType 사용
Study/Java 2020. 1. 28. 08:44

이전에 RestTemplate을 사용하면서 List 같은 Collection 형태로 반환받기 위한 방법에 대해 소개하는 글을 썼다. 2018/11/16 - [Study/Java] - RestTemplate list 반환하기 RestTemplate list 반환하기 요청을 반환받는 클래스가 다음과 같다고 가정한다. @Data public class ResultClass { private long idx; private String name; } List로 리턴 받는 방법 - 문제가 있음. 비추천 List list = restTe.. luvstudy.tistory.com 해당 방법은 ParameterizedTypeReference를 사용해서 리턴 값을 설정하는 방법인데 대략 다음과 같이 사용한다. List ..

Reactor 언제 어떤 Operator를 써야 할까?
Study/Java 2020. 1. 21. 13:40

reactor reference 문서의 Appendix A: Which operator do I need? 의 내용 요약 워낙 많은 operator를 제공하기 때문에 적절하게 사용하기 위해 상황별 목록을 요약해서 제공하고 있다. 시퀀스 생성 시 (Creating a New Sequence) just Optional : Mono#JustOrEmpty(Optional) null도 존재할 경우 T: Mono#justOrEmpty(T) 만약 늦은 처리가 필요한 경우 Mono#fromSupplier 또는 just 내 defer를 사용 iterate 관련 array : Flux#fromArray collection 또는 iterable : Flux#fromIterable 정수 범위 : Flux#range 각 Sub..

java backend developer roadmap
Study/Java 2020. 1. 19. 16:55

추천하는 java backend developer roadmap 소개 자바 웹 서버 개발자(backend developer)가 되려는 사람에게 도움이 될까 싶어서 적어보는 글. 개발자 로드맵에 관련된 글은 참 많은데 그중에 괜찮은 글이 있어 짤막하게 소개하려고 한다. https://javarevisited.blogspot.com/2019/10/the-java-developer-roadmap.html The 2020 Java Developer RoadMap A blog about Java, Programming, Algorithms, Data Structure, SQL, Linux, Database, Interview questions, and my personal experience. javarevisi..

Reactor map, flatMap method는 언제 써야할까?
Study/Java 2020. 1. 16. 07:16

webflux로 서비스를 만들어보면서 map과 flatMap을 언제 써야 할지 헷갈릴 때가 있어 공부한 내용을 정리함. map과 flatMap은 둘 다 스트림의 중간에 값을 변환해주는 역할을 한다. map은 1 : 1로 반환을 보증하고 flatMap은 1 : N을 변환할 수 있다. 요청에 대해 N개를 병렬로 실행할 경우가 많지 않아 map을 많이 쓸 것 같지만 개발을 하다 보면 대다수의 경우 flatMap을 사용하게 된다. flatMap을 사용하는 경우 flatMap을 사용하게 되는 경우는 다음과 같다. Mono -> Mono 또는 Mono -> Flux로 변환이 필요한 경우 map과 flatMap의 설명을 보면 다음과 같다. Publisher method Mono map Transform the ite..

Spring Boot @PropertySource 호출 순서 지정하기
Study/Java 2020. 1. 9. 14:58

multi module 환경에서 @PropertySource를 사용하는 방법에 대해 소개한 적이 있다. 2018/12/10 - [Study/Java] - Spring Boot multi module, multi profile 환경에서 @PropertySouce 사용하기 이런 multi module 환경에서 상위 모듈에 지정된 property 값을 특정 모듈에서는 다른 값을 재 지정해서 쓰고 싶은 경우가 있다. @PropertySource에 order 기능이 있으면 쉽겠지만 아쉽게도 그런 기능은 아직 제공하지 않는다. 따라서 이런 경우 environment에 등록된 propertySource 목록에 대해 순서를 재 지정해 우선순위를 조절해야 한다. 물론 java 내에서 application start 시점..

STS 4.5.0 spring boot application 실행 불가 현상
Study/Java 2020. 1. 3. 09:07

2019/12/19 STS 4.5.0 release 안내가 있었다. https://spring.io/blog/2019/12/19/spring-tools-4-5-0-released STS 4.5.0을 올리고 나니 몇 가지 문제가 있었다. multi module project에서 boot application 실행 시 class not found 에러 발생 후 웹서버 실행 불가 junit 실행 불가 위 두 가지 중 junit 실행 불가 부분은 현재 STS git issue로 등록되어 있다. https://github.com/spring-projects/sts4/issues/371 그런데 첫 번째 문제는 sts 쪽이나 eclipse 쪽 issue에 보이지 않는 것 같다. 위 현상은 일단 개인 프로젝트의 경우 ..

article thumbnail
Reactor 레퍼런스 문서 공부
Study/Java 2020. 1. 2. 08:44

Reactor 레퍼런스 문서 공부. 3.2 Asynchronicity to the Rescue? JVM에서 비동기 코드를 어떻게 개발할 수 있을까? 자바는 비동기 프로그래밍을 위한 두 가지 모델을 제공한다. Callbacks 비동기 메서드는 반환 값을 가질 수 없지만 외부 callback 매개 변수 (람다나 익명 클래스)를 통해 결과를 호출받을 수 있다. (ex : Swing의 EventListener) Futures 비동기 메서드는 Future를 즉시 리턴한다. 비동기 프로세스는 T value를 계산하지만 Future 개체는 이에 대한 access를 래핑 한다. 값을 즉시 사용할 수 없으며 사용할 수 있을 때까지 값을 polling 할 수 있다. (ex: Callable 작업을 실행하는 Executor..

반응형