Java 아키텍처·Spring 용어 사전
학습노트에서 용어를 누르면 여기로 옵니다. 각 용어의 동작 원리·내부 구조·실무 함정을 정리했습니다.
44개 용어 · 상세 정리 44개
Spring 코어4
- IoC·DI제어의 역전 · 의존성 주입 · 생성자 주입
객체 생성과 연결을 컨테이너에 맡기는 것. 생성자 주입이 불변성·순환 참조 조기 발견에서 유리하다.
- 빈 스코프싱글톤 빈 · prototype · 무상태
빈이 몇 개 만들어지고 얼마나 사는지. 기본은 컨테이너당 하나이며, 그래서 상태를 두면 안 된다.
- AOP 프록시JDK 동적 프록시 · CGLIB · 횡단 관심사
빈을 감싸는 대리 객체로 부가 기능을 끼우는 방식. @Transactional·@Cacheable이 전부 이 위에서 동작한다.
- 자기 호출self-invocation · 내부 호출
같은 클래스 안에서 자기 메서드를 부르면 프록시를 거치지 않아 애노테이션이 무시되는 현상.
JPA4
- 영속성 컨텍스트1차 캐시 · 쓰기 지연 · 변경 감지 · 더티 체킹
엔티티를 관리하는 작업 공간. 1차 캐시·쓰기 지연·변경 감지·지연 로딩이 전부 여기서 나온다.
- 지연 로딩LAZY · EAGER · 프록시 객체
연관 엔티티를 실제로 쓸 때까지 조회를 미루는 것. 모든 연관은 LAZY가 기본이어야 한다.
- N+1페치 조인 · fetch join · @EntityGraph · BatchSize
목록 1번 + 각 항목의 연관 N번을 조회하는 문제. 페치 조인·EntityGraph·BatchSize로 푼다.
- OSIVOpen Session In View · LazyInitializationException
영속성 컨텍스트를 뷰 렌더링까지 열어 두는 설정. 편하지만 커넥션을 오래 붙잡는다.
트랜잭션2
JDBC3
아키텍처2
Spring Boot1
Spring MVC2
Spring Data JPA2
테스트1
메시징2
캐시9
- 캐시 어사이드Cache-Aside · @Cacheable · 쓰기 전략
캐시를 먼저 보고 없으면 DB에서 읽어 채우는 패턴. 가장 흔하며 Spring의 @Cacheable이 이것이다.
- Redis레디스
메모리에 사는 자료구조 서버. 단일 스레드인데도 빠른 이유가 곧 설계의 핵심이다.
- Redis 영속성RDB · AOF
메모리에 있는 것을 어떻게 디스크에 남기나. 스냅샷(RDB)과 명령 로그(AOF) 두 갈래다.
- 축출 정책maxmemory-policy · 축출
메모리가 가득 찼을 때 무엇을 버리나. LRU·LFU 선택이 적중률을 가른다.
- Redis Cluster해시 슬롯
키를 16384개 슬롯으로 나눠 노드들이 나눠 갖는다. 슬롯 단위라 노드 증감이 쉽다.
- 캐시 스탬피드thundering herd · single-flight · stale-while-revalidate
인기 키가 만료되는 그 순간 수천 요청이 한꺼번에 DB로 몰린다.
- 캐시 페네트레이션블룸 필터
없는 키를 계속 조회하면 캐시도 DB도 매번 미스다. 캐시가 통째로 무력해진다.
- 캐시 어밸런치
많은 키가 한꺼번에 만료되거나 Redis 자체가 내려가 부하가 통째로 DB에 쏠린다.
- 로컬 캐시·분산 캐시Caffeine
JVM 안에 둘 것인가 Redis에 둘 것인가. 네트워크 비용과 일관성의 맞바꿈이다.