Study · Spring Boot · STEP 2 / 8 · 올릴 때

자동 구성은 마법이 아니라, 후보 271개에 붙은 조건을 하나씩 검사한 결과다

장면

설정 파일을 한 줄도 안 썼는데 DB도 붙고 웹 서버도 뜬다. 스프링 부트는 무엇을 켜고 무엇을 끌지 어떻게 정했을까?

아래 재생기의 ▶를 누르면 한 스텝씩 진행된다. 금색 테두리가 방금 바뀐 곳이고, 캡션이 무슨 일이 일어났는지 말해 준다. 굵게 밑줄 친 말은 누르면 뜻이 나온다.

장면 · 무엇을 켤지 정한다 0 / 10

▶를 누르면 설정 파일을 한 줄도 안 쓴 앱에서 무엇이 켜지고 무엇이 꺼지는지, 그것을 누가 정하는지 본다.

키보드 · ← → 한 스텝 · Space 재생/멈춤 · Home 처음

후보 271개에 각자 「언제 켠다」가 미리 적혀 있고, 그 조건을 클래스패스에 비춰 검사한 결과가 157 : 114다. 내가 build.gradle 에 무엇을 적었는지가 그대로 켜짐과 꺼짐을 가른다. 그리고 aspectj 가 없어야 켜지는 쪽과 있어야 켜지는 쪽, 그 한 쌍이 4단계에서 무엇으로 감쌀지를 정한다 — 조건 검사의 결과가 다음 단계의 입력이 된다.

어떻게 확인했나

  • 271 · 157 · 114 는 --debug 를 붙였을 때 로그 끝에 찍히는 CONDITIONS EVALUATION REPORT 에서 센 값이다. Positive matches 와 Negative matches 의 항목 수다.
  • 6 · 7번의 두 클래스(ClassProxyingConfiguration · AspectJAutoProxyingConfiguration)와 그 조건 줄도 같은 보고서에서 그대로 옮겼다.
  • 후보 목록이 모듈 jar 안의 META-INF/spring 아래 imports 파일에 흩어져 있다는 것은 보고서가 아니라 스프링 부트 문서와 jar 안의 파일에서 확인했다.