Develop/Spring

Develop/Spring

[Spring] 캐시란? + Spring Boot 내장 캐시 사용하기

사이드 프로젝트에 캐시를 적용하며 이것저것 알아보는 시리즈 1. [Spring] 캐시란? + Spring Boot 내장 캐시 알아보기2. [Cache/Spring] EhCache vs Cache2k vs Caffeine 캐시 비교하기3. [Cache/Spring] 내 어플리케이션의 캐시 히트율 알아보기 캐시를 왜 쓰나요? 본격적으로 EhCache와 Caffeine을 비교하기에 앞서, 캐시가 무엇이고 왜 쓰는지 먼저 알아보자. 위키피디아는 캐시를 다음과 같이 정의하고 있다. 데이터를 저장하여 향후 데이터에 대한 요청을 더 빠르게 처리할 수 있도록 하는 하드웨어 또는 소프트웨어 구성 요소.캐시에 저장된 데이터는 이전 계산의 결과이거나 다른 곳에 저장된 데이터의 복사본일 수 있다.ref) https://en...

Develop/Spring

[Spring Boot] AOP와 Spring AOP를 뜯어보자 (feat. Proxy, @Transactional)

AOP Aspect Oriented Programming : 관점 지향 프로그래밍 AOP의 사전적 정의는 다음과 같다. 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임. 이것만 보면 무슨 말인지 잘 모르겠지만, 우리에게 익숙한 OOP를 생각하면 보다 쉽게 이해할 수 있다. OOP (객체 지향 프로그래밍)을 떠올려보자. OOP는 프로그램을 객체들의 모임이라는 관점에서 바라보자는 프로그래밍 패러다임으로, 비즈니스 로직의 모듈화를 중심으로 구현된다. 하지만 비즈니스 로직을 중심으로 구현되는 OOP에 한 가지 문제가 생긴다. 로깅, 실행시간 측정과 같은 부가 기능들을 처리하기 힘들다는 것이다. 프로그램은 객체들의 상호작용이라는 관점답게, OOP는 상속이나 위임 등을 이용해 ..

Develop/Spring

[Spring Boot/JPA] @Transactional을 썼는데도 Dirty Checking에 실패한다면? (feat. clearAutomatically = true)

개요 최근, 이전에 개발했던 사이드 프로젝트를 리팩토링하고 있다. 이것저것 다양한 시도를 해보면서 생각보다 코드가 많이 바뀌었는데, 그 과정에서 멀쩡히 돌아가던 기능이 갑자기 실패하는 이슈가 발생했다 😇 🔫 다른 방법으로 해결할 수도 있었지만 그러면 진 느낌이 들어서 붙잡고 끙끙댔던 코드.. 겨우 찾은 원인은 생각보다 간단했지만, 내가 사용한 어노테이션과 영속성 컨텍스트 동작 원리를 모르면 또 제대로 이해하기 어려운 이슈라고 생각되어 포스팅해본다. (지금도 분해서 앓고 있음) 문제의 코드 코드를 보기 전에 간단히 도메인 컨텍스트를 설명하면 다음과 같다. 카테고리는 하위에 여러 개의 북마크를 가질 수 있고, 북마크는 무조건 하나의 카테고리에 속해야 한다. (즉 일대다 관계) 카테고리를 삭제하면 하위 북마크..

Develop/Spring

[Spring Boot] 외부 API 호출 도구 OpenFeign : RestTemplate, WebClient와 비교까지

개요 최근에 친구(조킴/특 : 그저빛)랑 얘기하다가 OpenFeign (오픈페인)에 대해 알게 되었다. 최근에는 외부 API 호출 시 RestTemplate이 아니라 OpenFeign을 많이들 이용한다고 하길래, 나도 한 번 알아보고 사용해보기로 했다 🤟 OpenFeign이란?1️⃣ 소개OpenFeign은 원래 Netflix에서 만들고 출시한 Feign이 오픈 소스 프로젝트로 확장된 친구다. 우리가 사용할 건 Spring-Cloud-Feign으로, OpenFeign 프로젝트가 Spring Cloud 생태계에 통합된 것이다. (📌 Netflix Feign -> OSS Feign (OpenFeign) -> Spring Cloud Feign) 근본인 OpenFeign의 공식 github about에 적힌 소개..

스껄한우디
'Develop/Spring' 카테고리의 글 목록