자바와 스프링을 정해진 커리큘럼에 따라 배우지는 않았습니다. 우선 일을 시작했고, 필요한 부분이 나오면 먼저 사용한 뒤에 기술을 습득했습니다. 이렇게 만들어진 퍼즐 조각들을 자바의 정석처럼 잘 작성된 책을 통해 다듬으며 청사진을 맞췄습니다.

이 스터디는 자바의 정석을 기반으로 Spring Boot 개발을 효율적으로 진행하기 위한 기반 지식과 실습으로 구성되어 있습니다.
막연하게 고급 주제를 훑지 않고 개념을 코드로 구현하며 왜 이렇게 동작하는지 왜 이렇게 만들어야 하는지를 실무 중심으로 체득하는 것을 목표로 합니다.
현재 진행하고 있는 스터디 목적은 다음과 같습니다.
- 효과적으로 자바를 사용한다 - 컬렉션, 스트림, 람다를 실무 코드에서 자연스럽게 활용
- 얕은 수준의 디자인 패턴을 이해한다 - 실무에서 자주 쓰이는 패턴을 Spring과 함께 학습
- Spring Boot 프로젝트를 이해한다 - 전체 구조와 설정, 실행 흐름 파악
- Spring Framework를 이해한다 - DI, AOP, 트랜잭션 등 핵심 메커니즘 이해
- JPA와 QueryDSL을 충분히 다룬다 - 데이터베이스 연동을 자유롭게 구현
여기에 있는 내용을 완전히 새로운 도메인을 설정해서 공부해볼 예정입니다.
도메인은 다음과 같습니다.
학습용 도메인: 만화카페 manca

이번 스터디를 위해 먼저 도메인을 만들어봤습니다.
한꺼번에 너무 많은 DDL을 공유하지 않고 커리큘럼에 따라 단계별로 공유해드리겠습니다.
간단히 설명하자면 만화카페를 운영하기 위한 전산 엔티티를 구성하고 이를 위한 이벤트를 정리하여 구현하게 됩니다.
커리큘럼
Step 1: Java 기초 & REST API 시작
달성 목표: 효과적으로 자바를 사용 + Spring Boot 프로젝트 이해
먼저, 자바의 정석에서 가벼운 마음으로 챕터 1부터 6장까지 읽었습니다. 스터디 대상이 처음 코딩을 배우는 사람은 아니기 때문에 6장까지 내용을 간략히 정리하고 넘어가려 합니다..
자바의 정석에서 배운 것 (Ch1-6):
- 변수와 자료형 (int, String, boolean 등)
- 연산자 (산술, 비교, 논리)
- 조건문 (if, switch)
- 반복문 (for, while)
- 메서드 (정의, 호출, 매개변수, 반환값)
- 클래스 기초 (객체 생성, 필드, 메서드)
Spring Boot와 연결:
- Spring Boot 프로젝트 구조와 실행 원리
- REST API 설계 원칙과 HTTP 메서드
- Controller에서 메서드 활용
- 클래스로 데이터 모델 표현
- 조건문/반복문으로 비즈니스 로직 구현
실습: 만화책 목록 조회/등록/수정/삭제 REST API 구현
Step 2: 객체지향과 계층 구조
달성 목표: Spring Framework 이해 + 얕은 수준의 디자인 패턴
자바의 정석에서 배운 것 (Ch6-7):
- 상속 (is-a 관계)
- 다형성 (부모 타입으로 자식 객체 참조)
- 인터페이스 (구현의 분리)
- 추상 클래스
- 접근 제어자 (public, private, protected)
Spring Boot와 연결:
- Controller-Service-Repository 계층 구조 (Layered Architecture)
- 인터페이스로 계층 간 결합도 낮추기
- DI(의존성 주입)와 IoC 컨테이너
- Repository Pattern
- DTO vs Entity 분리
실습: 계층별로 책임 분리하여 만화책 대여 기능 구현
Step 3: 예외 처리와 데이터베이스 연동 (JPA 기초)
달성 목표: JPA를 충분히 다룬다
자바의 정석에서 배운 것 (Ch8-9):
- 예외 처리 (try-catch-finally)
- 예외 던지기 (throws)
- 사용자 정의 예외
- java.lang 패키지 (Object, String, Math 등)
Spring Boot와 연결:
- JPA Entity와 객체지향 매핑
- Repository 인터페이스로 데이터 접근
- 예외 처리 전략 (@ControllerAdvice, @ExceptionHandler)
- ResponseEntity로 적절한 HTTP 응답 반환
- Bean Validation으로 입력 검증
실습: JPA로 데이터베이스 연동 및 전역 예외 처리 구현
Step 4: 컬렉션/제네릭/람다와 JPA 심화
달성 목표: 효과적으로 자바를 사용 + JPA와 QueryDSL을 충분히 다룬다
자바의 정석에서 배운 것 (Ch11-12):
- 컬렉션 프레임워크 (List, Set, Map)
- 제네릭 (<T>, 타입 안전성)
- 람다식 (익명 함수)
- 스트림 API (filter, map, collect)
Spring Boot와 연결:
- JPA 연관관계 매핑 (1:N, N:M)
- JPQL과 스트림 API 비교
- QueryDSL로 타입 안전한 동적 쿼리 작성
- 컬렉션을 활용한 데이터 가공
- 람다식으로 비즈니스 로직 간결화
실습: 회원-대여-만화책 연관관계 구현 및 복잡한 검색 조건 처리
Step 5: 인터페이스 심화와 Spring Security
달성 목표: Spring Framework 이해
자바의 정석에서 배운 것 (Ch7 심화):
- 인터페이스의 다중 구현
- 디폴트 메서드와 static 메서드
- 인터페이스를 통한 다형성
Spring Boot와 연결:
- 인증(Authentication)과 인가(Authorization)
- Security Filter Chain 동작 원리
- 인터페이스 기반 인증 전략 구현
- JWT 기반 토큰 인증
- 권한별 API 접근 제어
실습: 회원/관리자 권한 분리 및 로그인 구현
Step 6: 애너테이션과 AOP
달성 목표: Spring Framework 이해 + 얕은 수준의 디자인 패턴
자바의 정석에서 배운 것 (Ch12):
- 애너테이션의 정의와 사용
- 메타 애너테이션 (@Target, @Retention)
- 리플렉션으로 애너테이션 정보 읽기
Spring Boot와 연결:
- AOP의 동작 원리와 프록시 패턴 (Proxy Pattern)
- 커스텀 애너테이션 정의 및 활용
- Pointcut 표현식으로 적용 범위 지정
- 로깅, 성능 측정, 트랜잭션의 AOP 적용
- @Transactional의 동작 원리
실습: 커스텀 애너테이션으로 API 호출 로깅 및 실행 시간 측정 AOP 구현
다음 포스트에서 step 1부터 구체적인 실습 코드와 개념을 정리한 내용으로 진행됩니다. Spring Boot 프로젝트를 직접 구성하고 REST API를 구현하며 자바의 정석 1장부터 6장까지 내용을 간략히 정리하겠습니다.
'스터디 기록' 카테고리의 다른 글
| 스터디 2 - [Step 1] REST API 기초: HTTP 메서드로 CRUD 구현하기 (0) | 2025.11.18 |
|---|---|
| 컴퓨터 프로그램 만드는 일을 하고 있습니다. (0) | 2025.11.14 |