java 5

[트러블슈팅] Redis 호출 5번을 Pipeline으로 1번에 끝내기

공고 상세 조회 API에서 Redis 명령을 개별로 5~6번 호출하던 구조를 Pipeline으로 개선한 과정을 정리해 보겠습니다.이전에 공식문서를 통해 Redis를 공부하고 있었을 때 Pipeline이라는 것을 알게 되었습니다 Redis 공식문서의 예제 코드는 다음과 같습니다 //pop a specified number of items from a queueList results = stringRedisTemplate.executePipelined( new RedisCallback() { public Object doInRedis(RedisConnection connection) throws DataAccessException { StringRedisConnection stringRedi..

Spring Data Redis 공식문서로 내부 동작 이해하기

Spring Boot에서 Redis를 사용할 때 우리는 보통 아래처럼 아주 간단하게 사용한다.stringRedisTemplate.opsForValue().set("user", "donguk"); 하지만 이 한 줄 뒤에서는 생각보다 많은 계층과 추상화가 동작하고 있다.이 글에서는 Spring Data Redis 공식 문서 기반으로RedisTemplate 내부 동작Lettuce의 역할RedisConnection 추상화StringRedisTemplate 차이HashMapper 동작Redis 트랜잭션 구조Spring Boot Auto Configuration까지 전체 흐름을 깊게 정리해 본다. 참고 : https://docs.spring.io/spring-data/redis/reference/ Spring Da..

빈 생명주기 콜백 함수 와 빈 스코프

🌱 스프링 빈 생명주기 콜백 & 스코프 정리데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 미리 준비해둬야 하는 자원들이 있습니다.또한 종료 시점에는 연결을 정리해줘야 하죠.이런 과정을 위해 스프링은 빈의 초기화와 종료 콜백 메서드를 제공하고 있습니다.🔄 스프링 빈의 이벤트 라이프사이클스프링에서 빈이 어떻게 흘러가는지 한눈에 보면 다음과 같습니다. 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백(@PostConstruct) → 빈 사용→ 소멸 전 콜백(@PreDestroy) → 스프링 종료​ 즉, 초기화는 모든 의존관계 주입이 끝난 이후에 호출되고, 종료 직전에는 소멸 콜백이 실행됩니다.🏷️ 초기화 & 소멸 어노테이션가장 권장되는 방법은 바로 @Pos..

의존관계 자동 주입

스프링 의존관계 자동 주입 정리 ✨지난 글에서는 스프링 컨테이너 생성 과정과 빈 등록까지 살펴봤습니다.이제 본격적으로, 등록된 빈들 사이의 의존관계를 어떻게 주입하는지 정리해 보겠습니다.💡 의존관계 주입 방법스프링에서는 크게 네 가지 방식으로 의존관계를 주입할 수 있습니다.1. 생성자 주입 (Constructor Injection)객체 생성 시점에 단 한 번 호출불변(immutable), 필수 의존관계에 적합생성자가 1개뿐이라면 @Autowired 생략 가능롬복의 @RequiredArgsConstructor와 함께 자주 사용👉 특징: 빈 등록 과정에서 이미 의존관계가 해결됨.즉, 객체가 만들어질 때부터 안정적인 의존성을 갖게 됩니다@RequiredArgsConstructor @Service publi..

스프링 컨테이너생성 과 Component Scan

스프링 컨테이너란?스프링 컨테이너는 스프링에서 빈 들을 관리, 생성, 생명주기를 담당하는 역할을 한다스프링 컨테이너의 생성과정은 크게 2가지로 나뉜다 스프링 컨테이너의 생성 과정1. 설정 정보 (Config.class)를 보고 스프링 컨테이너가 빈들을 가져온다 이때 수동주입, 자동주입으로 빈들을 가져온다참고 : 부모 빈을 가져오면 거기에 딸린 모든 빈을 다 가져온다 (주렁주렁) 2. 이렇게 가져온 빈들의 의존관계를 설정한다 이 두 과정을 통해 스프링 컨테이너가 생성되고 빈들을 관리한다 1. 스프링 컨테이너 생성(ApplicationContext와 BeanFactory)사실 원래 빈을 관리하고 검색하는 기능은 BeanFactory가 제공한다그리고 이 BeanFacory의 빈을 관리하는 기능 + 여러 ..