본문 바로가기

Spring/Basic

(4)
Java Stream내에서 Exception Handling 동료의 Code를 Review하는 시간에 갑론을박 했던 내용이 있어 관련 내용을 찾아보고 정리해 보았다. 이슈가 됐던 거는 아래 Code-1과 유사한 코드였는데 그 내용은 stream()으로 진행하는 Lambda Function안에 try~catch 구문을 사용하는 것이 맞느냐? 좋은 코드냐? 는 논쟁이었다. ... Member member = memberRepository.findAllByGroup(groupName).stream(). .findfirst() .map(v -> { try { return mapper.readValue(v.getGroupInfo(), MemberGroup.class); } catch (JsonProcessingException e) { log.error("JsonProce..
Rest API 호출 제한 - Bucket4J 배경 특정 사용자가 서비스에서 제공되는 검색 기능을 과도하게 이용해서 DDoS 적인 현상을 발생시켰고, 이를 방지하고자 몇 가지 방안을 마련하는 과정에서, 몇몇 Rest API에 대해 사용 제한 설정을 위해 알아본 내용을 정리한 내용이다. Rate Limit Algorithm 위와 같이 클라이언트로부터의 과도한 사용에 대해 서비스의 가용성을 안정적으로 유지하기 위해 트래픽을 일정 수준으로 조정하는 수단으로 언급되는 것이 Rate Limit Algorithm 이다. 특정 IP, 특정 Access-key 등에 대해 일정 횟수로 사용 제한을 하거나, 사용 시간 제한 등을 적용해서 사용 제한을 넘는 요청에 대해 거부를 하거나, 혹은 일정 시간 대기, 또는 요금을 받고 제한을 풀어주는 Business Model을..
Rest API에서 date type의 Parameter 처리 최근에 Rest API를 추가할 때 datetime type의 parameter를 처리하는 과정에서 살짝 고생을 했다. 그냥 String으로 받아 Parameter Validation과정에서 Convert해서 쓰면 될 문제였는데, 가끔 발동되는 오기로 인해 관련 내용을 파게 됐고 그 내용을 정리해 보았다. 실험 환경 Spring Boot v2.19 JDK 1.8 예제 코드 ... @RestController public class DateController { @PostMapping("/date") public ResponseEntity dateTest(@RequestParam("date") Date date) { SimpleDateFormat dateFormat = new SimpleDateFormat..
Spring Boot 2 Logging 설정 잡설2년 만에 프로젝트 새로 만들어서 개발하려고 했더니... 환경 구성하는 것부터 버벅거리면서 한참을 헤맸다. 그 김에 작은 거 하나하나 좀 정리해가려 한다. 개발 환경여기서 사용되는 예제는 다음 환경에서 작성되었다.STS 3.9.0 (Eclipse Oxygen 4.7.0)Spring Boot 2.1JDK 1.8Gradle 맛보기Spring Boot 2.x 에서는 굉장히 쉽게 기본적인 Logging 환경을 구성할 수 있다. 일단 File - New Spring Stater Project 를 선택해서 Project Name, Group Name, Artifact 등을 정하고 Next를 누르면 Boot Version과 Dependencies를 선택하는 메뉴로 넘어가게 된다. 여기서 Core - Lombok을..