spring4 [Cache] 다수 key로 CacheEvict, Page 직렬화 (CacheResolver, Mixin, DefaultTyping, Custom Se/Deserializer) 목차 해결 과제: 한 번에 다수의 캐시를 Evict 하기, Page 직렬화하기 문제: @CacheEvict는 복수의 key 불가 해결. SpEL과 CacheResolver를 통해 해결 개선. RedisCacheMange 설정들 문제: 직렬화 실패 해결Java8부터 추가된 LocalDateTime -> JavaTimeModule 모듈 추가 Lazy Loading으로 인한 Hibernate Proxy -> Mixin을 등록하여 직렬화 무시 문제: 역직렬화 실패 LinkedHashMap으로 역직렬화 -> ObjectMapper에 DefaultTyping 설정 기본 생성자가 없어 역직렬화 불가 -> Customize Serializer / Deserializer 성능 테스트 with JMeter 해결 과제 배.. 2023. 6. 16. TDD(테스트 주도 개발) 시작하는 방법 들어가기 우아한테크코스에 지원했습니다. 합격을 위한 1차 관문인 PreCource를 진행하고 있는데, 2주 차 과제에서 테스트 코드를 작성하는 요구사항이 생겼습니다. 테스트를 해보라고 하니, 말로는 많이 들었던 TDD를 시도해볼 수 있는 좋은 기회가 될 것 같아, TDD에 대해서 찾아보았습니다. WHAT is TDD? TDD는 Test-Driven Development의 약자로, 테스트 주도 개발이라고 합니다. 간단하게 말하면, 실제 코드를 작성하기 전에 테스트 코드부터 작성한 후, 처음에는 당연히 실패할 (아직까지 작성한 코드가 없기 때문에) 테스트를 조금씩 성공시켜가며 개발을 하는 개발 방법입니다. 위키에 따르면 주목받은 지 얼마 되지 않은 TDD가 사실은 1999년에 시작됐다고 합니다. 신기하네요ㅎ.. 2022. 11. 6. [로깅 전략] 로그는 어떻게 남겨야할까? (중앙집중식 로깅) 로그를 어떻게 남겨야할지 찾다가 넷마블 기술 블로그에 좋은 자료가 있어 간략하게 기록을 남겨봅니다. 넷마블 기술 블로그 왜 로그를 남길까? 로그는 서비스의 이상현상을 파악하고 발생원인을 찾기 위해 남깁니다. 또한 요즘처럼 MSA를 도입하며 서비스가 커지고 복잡해지는 상황에서 문제를 파악하기 쉽도록 로그를 남기는 것이 중요합니다. 중앙집중식로깅 기존에는 로컬 서버에 로그를 축적했었지만, 이런 방법으로는 로그 정보에 접근하기가 어렵고, MSA가 등장함에따라 로그가 발생하는 서버의수가 많아지는 어려움이 있었습니다. 이런 문제를 해결하기 위해 중앙집중식로깅이 등장하게 되었습니다. 기본적으로 여러 곳에서 발생하는 로그를 한 곳으로 모아 관리하는 것입니다. 이렇게 되면 로그 정보에 접근하기는 쉬워졌지만, 너무 다양.. 2022. 10. 26. [SpringBoot] 스프링부트 이해하기- 4편 Reflection(feat. 동적 로딩) Reflection 앞선 포스팅에서 스프링/스프링부트의 DispatcherServlet에 대해 알아보았습니다.. 짧게 요약하자면, DispatcherServlet은 클라이언트의 요청을 받아서 적절한 컨트롤러(또는 핸들러)를 찾아 동적으로 실행시킨 후 결과를 받아 Http형식에 맞게 리턴하는 기능을 합니다. 이때, '적절한 컨트롤러를 찾아 동적으로 실행'시키는 부분에서 '리플렉션(Reflection)'이라는 개념이 들어갑니다. Reflection이란? 오라클 홈페이지에서는 리플렉션을 아래와 같이 소개하고 있습니다. 더보기 Reflection is a feature in the Java programming language. It allows an executing Java program to examine.. 2022. 7. 16. 이전 1 다음