~/tech-blog/tag/Spring — zsh
지금 --명이 보고 있습니다오늘 --누적 --

#Spring 42 posts

카테고리를 가로질러 Spring를 다룬 글을 모았습니다.

테스트

Layered Architecture 구조별 테스트 작성법

Persistence, Business, Presentation 계층의 역할과 계층별 테스트 범위, @SpringBootTest·@DataJpaTest·@WebMvcTest의 차이와 @Transactional(readOnly = true) 사용법을 정리합니다.

2024.10.25 · 1354ac5 · 테스트 — 6 min
테스트

@Mock, @MockBean, @Spy, @SpyBean, @InjectMocks

Mockito의 @Mock·@Spy·@InjectMocks와 스프링 부트의 @MockBean·@SpyBean이 각각 무엇을 가짜 객체로 대체하는지 예제 코드로 비교하고, 테스트 준비 코드를 @BeforeEach·given·when에 나누는 문제를 정리합니다.

2024.10.25 · 1354ac5 · 테스트 — 11 min
SPRING

실무에서 잘못 사용하고 있던 Transaction

실무 프로젝트 전반에 REQUIRES_NEW가 걸려 있던 원인을 프록시 패턴과 롤백 시점, 컨트롤러에 걸린 AOP 트랜잭션 설정에서 찾아 분석한 과정을 정리합니다.

2024.09.21 · b63427e · Spring — 8 min
SPRING

Spring Annotation 그리고 Custom Annotation

@Component에 붙은 Target, Retention 같은 메타 어노테이션의 의미와, @Service처럼 @Component를 품은 어노테이션을 Spring이 ClassPathBeanDefinitionScanner의 doScan으로 찾아 빈으로 등록하는 과정을 정리합니다.

2024.09.13 · b63427e · Spring — 5 min
SPRING

@Transactional 롤백이 안 되는 일을 실제로 겪다

같은 서비스 안에서 @Transactional 메서드를 자기 호출해 롤백이 안 되는 문제를 실제 운영 코드에서 겪고, 트랜잭션 이름을 직접 확인하며 별도 서비스로 분리해 해결한 과정을 기록합니다.

2023.08.14 · b63427e · Spring — 2 min
DATABASE

커넥션 풀과 데이터소스 이해하기

DB 커넥션을 매번 새로 맺을 때 거치는 여섯 단계와 그 문제를 흐름도로 정리하고, 커넥션 풀과 DataSource 추상화가 이를 어떻게 해결하는지 설명합니다.

2023.08.12 · c492706 · Database — 2 min
SPRING

@Transactional try ~ catch 롤백 안 되는 원인

@Transactional 안에서 try ~ catch로 예외를 잡으면 롤백이 동작하지 않는 원인을 TransactionAspectSupport와 rollbackOn 내부 동작으로 분석하고, catch에서 Unchecked Exception을 다시 던지는 해결 방법을 정리합니다.

2023.07.29 · b63427e · Spring — 6 min
SPRING

RestTemplate 이란, 메소드, 사용예시

Spring이 제공하는 HTTP 클라이언트 RestTemplate의 특징과 주요 메서드를 정리하고, exchange()로 요청을 보내는 예시와 응답 상태에 따라 예외가 처리되는 흐름을 그림과 함께 설명합니다.

2023.03.09 · b63427e · Spring — 4 min
SPRING

테스트에서 만난 NoUniqueBeanDefinitionException

트랜잭션 매니저 빈이 여러 개 등록된 환경에서 테스트 코드가 NoUniqueBeanDefinitionException을 남긴 원인과, @Transactional에 트랜잭션 매니저 이름을 지정해 해결한 과정을 정리합니다.

2022.12.22 · b63427e · Spring — 3 min
스프링 데이터 JPA · 3/6

공통 인터페이스 기능

순수 JPA로 기본 CRUD 리포지토리를 만들어 본 뒤, 스프링 데이터 JPA의 공통 인터페이스 JpaRepository로 대체하고, 스프링 데이터 JPA가 구현 클래스를 만들어 주입하는 방식과 주요 메서드를 정리합니다.

2022.05.03 · 413c03a · Spring JPA — 10 min
스프링 데이터 JPA · 6/6

스프링 데이터 JPA는 어떻게 동작하는가

스프링 데이터 JPA 공통 인터페이스 구현체인 SimpleJpaRepository의 @Repository·@Transactional 적용 방식과, save() 메서드가 isNew로 persist와 merge를 나누는 기준, Persistable로 판단 로직을 바꾸는 방법을 정리합니다.

2022.05.10 · 413c03a · Spring JPA — 5 min
자바 ORM 표준 JPA · 8/13

즉시 로딩과 지연 로딩

FetchType.LAZY와 FetchType.EAGER로 연관된 Team을 조회하는 시점이 어떻게 달라지는지 프록시 관점에서 정리하고, 즉시 로딩이 일으키는 N+1 문제와 실무에서 지연 로딩을 쓰는 이유를 짚습니다.

2022.04.29 · cc57341 · Spring JPA — 3 min
스프링 입문 · 2/12

회원 관리 예제 — 백엔드 개발 (1)

회원 도메인과 메모리 기반 리포지토리를 인터페이스로 설계하고, JUnit으로 저장·조회 기능을 테스트하며 @AfterEach로 테스트를 서로 독립시키는 과정을 정리합니다.

51441c4 · Spring — 7 min
스프링 입문 · 3/12

회원 관리 예제 — 백엔드 개발 (2)

회원가입 중복 검증 로직을 담은 Service 계층을 구현하고, given-when-then 패턴으로 정상 케이스와 예외 케이스를 테스트하며 @BeforeEach로 저장소를 주입하는 과정을 정리합니다.

51441c4 · Spring — 6 min
스프링 입문 · 6/12

회원 웹 기능 — 등록, 출력

Thymeleaf로 홈, 회원 등록 폼, 회원 목록 화면을 구성하고 HomeController에서 등록·조회 요청을 처리하는 과정을 정리합니다.

51441c4 · Spring — 6 min
스프링 입문 · 8/12

순수 JDBC 사용과 연동

순수 JDBC로 MemberRepository를 구현하고, SpringConfig의 빈 설정만 바꿔서 메모리 저장소를 DB로 교체하는 과정을 정리합니다.

51441c4 · Spring — 8 min
스프링 입문 · 10/12

스프링 JPA 통합 테스트

JPA 라이브러리와 설정을 추가하고 Member 엔티티 매핑과 EntityManager 기반 리포지토리를 구현한 뒤, SpringConfig의 빈 설정만 바꿔 JDBC 구현체를 JPA로 교체하는 과정을 정리합니다.

51441c4 · Spring — 7 min
스프링 핵심 원리 · 1/18

객체 지향 설계와 스프링

스프링을 배우기에 앞서 다형성과 역할-구현 분리, SOLID 5원칙이 왜 좋은 객체 지향 설계의 토대가 되는지 정리합니다.

3a5e04f · Spring — 6 min
스프링 핵심 원리 · 2/18

예제 만들기

회원 조회와 주문 할인 정책 예제를 구현하며 DIP 위반 문제를 발견하고, AppConfig로 관심사를 분리하는 과정을 정리합니다.

3a5e04f · Spring — 6 min
스프링 핵심 원리 · 3/18

AppConfig 리팩터링

중복이 있던 AppConfig를 리팩터링해 역할과 구현이 한눈에 드러나도록 정리하고, 그 과정에서 지켜지는 SOLID 원칙을 살펴봅니다.

3a5e04f · Spring — 3 min
스프링 핵심 원리 · 4/18

스프링 빈으로 전환하기

순수 자바 코드로 작성했던 AppConfig를 @Configuration과 @Bean으로 전환해 스프링 컨테이너에 빈을 등록하고, ApplicationContext에서 빈을 조회해 사용하는 과정을 정리합니다.

3a5e04f · Spring — 4 min
스프링 핵심 원리 · 5/18

BeanFactory와 ApplicationContext

스프링 컨테이너의 최상위 인터페이스인 BeanFactory와, 이를 상속해 국제화·환경변수·이벤트·리소스 조회 같은 부가 기능을 제공하는 ApplicationContext의 역할을 정리합니다.

3a5e04f · Spring — 2 min
스프링 핵심 원리 · 6/18

XML로 스프링 빈 설정하기

자바 코드 대신 XML로 스프링 빈을 설정하는 방법과, 자바 코드·XML 같은 다양한 설정 형식을 가능하게 하는 BeanDefinition 추상화와 BeanDefinitionReader의 역할을 정리합니다.

3a5e04f · Spring — 4 min
스프링 핵심 원리 · 7/18

웹 애플리케이션과 싱글톤

요청마다 new로 객체를 생성하던 AppConfig의 문제를 직접 구현한 싱글톤 패턴과 스프링 컨테이너로 각각 해결해 보고, 싱글톤 패턴의 문제점을 정리합니다.

3a5e04f · Spring — 5 min
스프링 핵심 원리 · 8/18

싱글톤 방식의 주의점

싱글톤 빈은 여러 클라이언트가 하나의 객체를 공유하기 때문에 무상태로 설계해야 한다는 점을, 공유 필드 때문에 다른 사용자의 주문 금액이 조회되는 StatefulService 예제로 확인합니다.

3a5e04f · Spring — 5 min
스프링 핵심 원리 · 9/18

싱글톤 컨테이너와 @Configuration

AppConfig에서 memberRepository()가 여러 번 호출되는 것처럼 보여도 싱글톤이 보장되는 이유를 @Configuration과 CGLIB 바이트코드 조작으로 확인하고, @Bean만 사용할 때와 비교합니다.

3a5e04f · Spring — 9 min
스프링 핵심 원리 · 10/18

컴포넌트 스캔

설정 정보 없이 스프링 빈을 자동으로 등록하는 컴포넌트 스캔과 @Autowired 의존관계 자동 주입의 동작, 탐색 위치 지정과 기본 스캔 대상을 정리합니다.

3a5e04f · Spring — 6 min
스프링 핵심 원리 · 11/18

생성자 주입을 선택해야 하는 이유

수정자 주입 대신 생성자 주입을 권장하는 이유와, 롬복의 @RequiredArgsConstructor로 생성자 코드를 줄이는 방법을 정리합니다.

3a5e04f · Spring — 6 min
스프링 핵심 원리 · 12/18

조회 빈이 2개 이상 충돌할 때

스프링에서 @Autowired로 조회한 빈이 2개 이상일 때 발생하는 충돌을 필드명 매칭, @Qualifier, @Primary로 해결하는 방법과 둘을 함께 쓸 때의 우선순위를 정리합니다.

3a5e04f · Spring — 7 min
스프링 핵심 원리 · 13/18

의존관계 주입 애노테이션 직접 만들기

문자열로 적는 @Qualifier는 오타가 나도 컴파일 시점에 잡히지 않습니다. 전용 애노테이션을 직접 만들어 의존관계를 주입하는 방법을 정리합니다.

3a5e04f · Spring — 3 min
스프링 핵심 원리 · 14/18

자동과 수동, 실무에서의 판단 기준

스프링 빈을 자동 등록과 수동 등록 중 어떤 기준으로 선택해야 하는지, 업무 로직과 기술 지원 로직을 나누어 정리합니다.

3a5e04f · Spring — 3 min
스프링 핵심 원리 · 15/18

빈 생명주기 콜백

스프링 빈의 생명주기와 초기화·소멸 콜백을 인터페이스, 설정 정보, @PostConstruct/@PreDestroy 세 가지 방식으로 비교해 정리합니다.

3a5e04f · Spring — 11 min
스프링 핵심 원리 · 16/18

프로토타입 스코프와 싱글톤 빈

싱글톤과 프로토타입 빈 스코프의 차이를 살펴보고, 싱글톤 빈이 프로토타입 빈을 주입받을 때 발생하는 문제를 예제로 정리합니다.

3a5e04f · Spring — 9 min
스프링 핵심 원리 · 18/18

웹 스코프

웹 스코프와 request 스코프의 동작 방식을 살펴보고, ObjectProvider와 CGLIB 프록시로 스코프 문제를 해결하는 방법을 정리합니다.

3a5e04f · Spring — 10 min
스프링 입문 · 4/12

컴포넌트 스캔과 자동 의존관계 설정

@Component 애노테이션이 붙은 클래스를 스프링 빈으로 자동 등록하고, 생성자를 통해 의존관계를 자동으로 주입받는 컴포넌트 스캔 방식을 회원 예제로 정리합니다.

51441c4 · Spring — 4 min
스프링 입문 · 5/12

자바 코드로 스프링 빈 직접 등록하기

아직 데이터베이스가 정해지지 않은 상황에서 SpringConfig 자바 클래스에 @Configuration과 @Bean을 붙여 스프링 빈을 직접 등록하는 방법을 정리합니다.

51441c4 · Spring — 2 min
스프링 입문 · 7/12

H2 데이터베이스 설치와 연동

H2 데이터베이스를 설치해 member 테이블을 만들고, build.gradle과 application.properties를 설정해 스프링 프로젝트와 연동하는 과정을 정리합니다.

51441c4 · Spring — 2 min
스프링 입문 · 9/12

스프링 통합 테스트

@SpringBootTest와 @Transactional로 회원 서비스의 회원가입, 중복 검증, 조회 기능을 통합 테스트하는 과정을 정리합니다.

51441c4 · Spring — 3 min
스프링 입문 · 11/12

스프링 데이터 JPA와 통합 테스트

JpaRepository를 상속한 인터페이스만으로 리포지토리 구현체가 만들어져 스프링 빈으로 등록되는 스프링 데이터 JPA 사용법과, SpringConfig에서 이를 주입받는 방법을 정리합니다.

51441c4 · Spring — 4 min
스프링 입문 · 12/12

AOP가 필요한 상황, 사용법

회원 서비스의 메서드마다 넣은 실행 시간 측정 코드를 예로 들어 핵심 관심사항과 공통 관심사항을 나누는 AOP의 필요성과, @Aspect와 @Around로 시간 측정 AOP를 작성하는 방법을 정리합니다.

51441c4 · Spring — 5 min
● main 231 posts UTF-8 LF © 2026 코징 RSS · GitHub