내가 쓴 클래스는 5개인데 통에는 317개가 들어 있다. 나머지 312개는 누가 넣었고, 무엇을 먼저 만들지는 누가 정할까?
아래 재생기의 ▶를 누르면 한 스텝씩 진행된다. 금색 테두리가 지금 이야기하는 곳이고, 캡션이 무슨 일이 일어났는지 말해 준다. 굵게 밑줄 친 말은 누르면 뜻이 나온다. 빨간 딱지는 그때 벌어지는 일의 이름이고, 캡션 바로 위 회색 글자는 지금 스텝이 속한 묶음의 이름이다.
카드 아래 회색 줄은 그 일이 실제로 적혀 있는 소스의 파일 이름 : 줄 번호와 함수 이름이다. 글 안에 (:669)처럼 줄 번호만 적힌 것은 바로 앞에 적은 파일의 그 줄이라는 뜻이다. 캡션 한가운데 박힌 긴 영어 이름과 괄호 속 파일 · 줄 번호도 같다 — 건너뛰고 한글만 읽어도 뜻이 통하게 써 두었다.
장면 · 빈을 만들어 통에 담는다0 / 10
▶를 누르면 빈 통이 317개로 차기까지, 그리고 무엇이 무엇보다 먼저 만들어지는지 본다.
키보드 · ← → 한 스텝 · Space 재생/멈춤 · Home 처음
나는 순서를 한 번도 적지 않았다. 생성자에 「무엇이 필요한가」만 적었더니 필요한 것이 먼저 만들어졌다. dataSource → jdbcTemplate → orderService → orderController 가 그렇게 정해진 순서다. 이 순서를 사람이 적는 구조였다면, 빈이 하나 늘 때마다 그 목록도 같이 고쳐야 했을 것이다.
어떻게 확인했나
소스 어디를 보고 적었는지와 무엇을 돌려서 쟀는지를 남긴 자리다. 처음 읽을 때는 건너뛰어도 된다.
total 317 · mine 5 · 이름 다섯 개는 기동이 끝난 뒤 도는 러너가 통에 직접 물어본 값이다.
auto 312 는 317에서 5를 뺀 값이다. 통에 따로 물어본 값이 아니다.
격자 32칸은 317개를 다 그릴 수 없어 줄여 그린 그림이다. 칸의 위치와 색이 번지는 순서는 이해를 돕는 배치이고, 실제로 확인한 것은 dataSource · jdbcTemplate · orderService · orderController 네 개가 그 순서로 서로를 필요로 한다는 것까지다.