프레임워크 수련
수련장은 Spring과 그 둘레를 맡는다. 자바 수련각이 「내 코드가 어떻게 도나」를 봤다면, 여기는 「내가 안 짠 코드가 내 코드를 어떻게 불러 주나」를 본다.
지금 이 구역에서 끝낸 수련은 하나다.
익힌 것 — main() 한 줄을 8단계로 따라갔다
Study · Spring Boot는 SpringApplication.run() 한 줄이 HTTP 응답 한 번이 되기까지를 여덟 토막으로 잘라, 단계마다 버튼으로 한 스텝씩 넘기며 보는 페이지다.
| 단계 | 무엇을 보나 | 남는 것 |
|---|---|---|
| 1 · 시작 | main() 한 줄이 무엇을 시작하나 |
run() 안의 일곱 줄 |
| 2 · 자동 구성 | 무엇을 켤지 정한다 | 조건 271개가 157:114로 갈린다 |
| 3 · 빈 | 빈을 만들어 통에 담는다 | 317개 중 내 것은 5개 |
| 4 · 프록시 | 프록시로 감싼다 | 주입받은 것이 내 클래스가 아니다 |
| 5 · 톰캣 | 톰캣이 올라가고 포트가 열린다 | 요청 전에 이미 스레드 12개 |
| 6 · 스레드 | 스레드 하나가 집어 간다 | 매번 다른 스레드, 같은 컨트롤러 |
| 7 · 매핑 | 어느 메서드인지 고른다 | 표는 기동 때 이미 만들어져 있다 |
| 8 · 응답 | JSON이 되고 스레드가 반납된다 | 첫 요청만 유난히 느리다 |
8단계를 한 번 지나면 다음 질문에 답할 수 있다 — 내가 켜지 않은 설정이 왜 켜져 있나, 주입받은 객체가 왜 내 클래스가 아닌가, 컨트롤러 하나를 여러 요청이 동시에 쓰는데 왜 안 깨지나, 첫 요청만 왜 느린가.
같이 읽는 글
프레임워크가 무엇을 해 주는지 알고 나면, 그 위에서 코드를 어디에 놓을지가 다음 문제다. 그건 코딩 스탠다드가 맡는다.
- 패키지 구조 표준 — 도메인 안을 네 겹으로 나눈다
- Repository 설계 표준 — 저장·단건 조회와 동적 검색은 인터페이스를 나눈다
- 예외 처리 표준 —
ErrorCode가 실패의 단일 출처다 - 트랜잭션 프록시가 보이는 범위 — Study 4단계의 프록시를 실제로 돌려서 잰 증명
아직 안 한 것
- 트랜잭션 — Study에는 없다. 전파 속성, 프록시 자기 호출, 롤백 규칙
- Security — 필터 체인이
DispatcherServlet앞에 어떻게 붙나 - JPA와 영속성 컨텍스트 — 1차 캐시, 더티 체킹, 플러시 시점
- AOP — Study 4단계는 프록시가 생긴 것만 본다. 포인트컷과 어드바이스는 안 봤다
최상단으로 이동했습니다!