글쓴이: JAVA/Spring Boot 백엔드 개발 10년차. SI로 시작해 현재는 자사 서비스 백엔드를 맡고 있습니다.
2019년 초쯤이었습니다. 정산 배치가 중간에 죽었는데 절반만 커밋된 채로 멈춰 있었습니다. 분명히 @Transactional을 붙였는데 롤백이 안 된 겁니다. 원인은 같은 클래스 안에서 메서드를 직접 호출한 것, 이른바 self-invocation이었습니다. 당시 4명이던 팀에서 이걸 설명할 수 있는 사람이 아무도 없었고, 저는 그날 밤 책장에서 먼지 쌓인 토비의 스프링 3.1을 다시 꺼냈습니다.
10년차가 된 지금도 후배들에게 스프링 책을 딱 한 질만 추천하라면 여전히 이 책입니다. 2012년에 나온 책을 2026년에 추천하는 게 이상하게 들릴 수 있다는 것도 압니다. 그런데도 추천하는 이유의 8할은 AOP 단원 때문입니다.

@Transactional은 마법이 아니었다
그날 밤 다시 읽은 부분은 Vol. 1의 6장 AOP였습니다. 이 장은 트랜잭션 코드를 서비스 로직에서 분리하는 과정을 다이내믹 프록시부터 한 단계씩 직접 만들어 보여줍니다.
읽고 나서야 알았습니다. @Transactional은 마법이 아니라 스프링이 내 빈을 프록시로 감싼 것이고, 같은 클래스 내부 호출은 그 프록시를 거치지 않으니 트랜잭션이 열리지 않는 게 당연했습니다. 장애의 원인이 한 줄로 설명되는 순간이었습니다.
이게 이 책의 방식입니다. “AOP는 이렇게 쓴다”가 아니라, 스프링 개발자들이 왜 이런 구조를 선택할 수밖에 없었는지를 코드로 재연합니다. 원리를 따라가고 나면 프레임워크가 예상 밖으로 동작할 때 당황하지 않게 됩니다.
Vol. 2의 5장, AOP와 LTW
Vol. 1의 AOP가 원리 편이라면, Vol. 2의 5장 「AOP와 LTW」는 실전 선택 편입니다. 프록시 기반 AOP의 종류와 한계, @AspectJ 스타일, 그리고 로드타임 위빙(LTW)까지 스프링이 제공하는 AOP 방식을 비교하며 어떤 상황에 무엇을 골라야 하는지 다룹니다.

책 서두에서 저자도 밝히듯 이 장은 고급 주제라 어렵습니다. 저도 처음 읽었을 때는 절반쯤 이해하고 덮었습니다. 그런데 연차가 쌓이고 프록시 때문에 한 번씩 데일 때마다 돌아와서 다시 읽게 되는 장이 바로 여기입니다.

낡은 책이 아직 유효한 이유
솔직하게 말하면 이 책의 예제 환경은 낡았습니다. XML 설정이 많이 등장하고, 스프링 3.1은 이미 지원이 끝난 버전입니다. Spring Boot 3.x와 Java 21을 쓰는 지금, 예제를 그대로 따라 치는 건 권하지 않습니다.
그런데 AOP 단원이 다루는 핵심, 즉 다이내믹 프록시, 포인트컷과 어드바이스, 프록시의 한계는 지금의 스프링에서도 그대로입니다. Spring Framework 공식 AOP 문서 를 열어봐도 개념 체계가 이 책과 거의 같습니다. 도구는 바뀌었지만 원리는 14년째 그대로라는 뜻입니다.
실무에서 만나는 문제도 마찬가지입니다. @Transactional이 안 먹는 문제, @Cacheable과 내부 호출, final 클래스 프록시 실패 같은 이슈는 지금도 신입이 들어올 때마다 반복됩니다. 작년에도 저희 팀 2년차가 똑같은 self-invocation 문제로 반나절을 썼고, 저는 설명 대신 이 책의 AOP 장을 빌려줬습니다. 다음 날 본인 입으로 프록시 구조를 설명하더군요.
다시 읽으면서 후회한 것
하나 고백하자면, 신입 때 이 책을 1장부터 순서대로 완독하려다 두 번 포기했습니다. 합쳐서 1,600페이지가 넘는 분량을 정면 돌파하는 건 지금 생각해도 무리였습니다.
다시 돌아간다면 이렇게 읽겠습니다. Vol. 1의 1장(오브젝트와 의존관계)과 6장(AOP)을 먼저, 나머지는 실무에서 해당 주제에 부딪힐 때마다 찾아 읽는 식으로요. 이 책은 소설이 아니라 레퍼런스에 가깝습니다. 특히 6장만큼은 시간을 들여 예제를 직접 따라 만들어 보는 걸 권합니다. 눈으로만 읽은 것과 프록시를 손으로 만들어 본 것의 차이가 컸습니다.
Spring Boot로 개발을 시작해서 스프링이 “그냥 되는 것”으로 느껴지는 분일수록 이 책의 효과가 큽니다. 부트가 감춰 놓은 부분이 바로 이 책이 설명하는 부분이기 때문입니다.
책값이 부담된다면 중고로 구해도 충분합니다. 개정판이 없어서 내용 차이도 없습니다. 다만 어떤 판본이든, 5장과 6장 AOP 단원만은 건너뛰지 마시기 바랍니다. 제 경험상 그 두 장이 이 두꺼운 책값의 대부분을 합니다.