ControllerScanner
: @Controller ์ ๋
ธํ
์ด์
์ด ์ค์ ๋์ด ์๋ ๋ชจ๋ ํด๋์ค๋ฅผ ์ฐพ๊ณ , ๊ฐ ํด๋์ค์ ๋ํ ์ธ์คํด์ค ์์ฑ์ ๋ด๋นConstructor
: ์์ฑ๋ ๋ basePackage๋ฅผ ๋ฐ์์ ์ค์บํ ํจํค์ง๋ฅผ ์ค์ ํ๋ค.getControllers()
: @Controller ์ด๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค๋ฅผ ๋ชจ๋ ์ค์บํ๊ณ Class ํ์
์ annotated๋ ํด๋์ค๋ฅผ ๋ฐํํ๋ค.
ํด๋น ํด๋์ค์ ๋ํ ์ธ์คํด์ค๋ฅผ ์์ฑ ๋ฐ ์ ์ฅํ๋ค.
java.lang.Class<T>์ ์ธ์คํด์ค๋ ์คํ์ค์ธ ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ๋ํ๋ธ๋ค. ๊ธฐ๋ณธ ์๋ฃํ ๋ฐ void ํค์๋๋ํ Class ๊ฐ์ฒด๋ก ํํ๋๋ค. publlic ์์ฑ์๋ ์กด์ฌํ์ง ์์ผ๋ฉฐ JVM์ ์ํด ์๋์ผ๋ก ์์ฑ๋๋ค.
initialize()
: controllerScanner๋ฅผ ํตํด ๋ฐ์์จ ์ปจํธ๋กค๋ฌ๋ฅผ ๋๋ฉฐ @RequestMapping์ด ๋ถ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฐพ๋๋ค.
putHandlerExecution()
: ๋ฉ์๋์ ์ด๋
ธํ
์ด์
์ ๋ณด์์ url๊ฐ๊ณผ HttpMethod๋ฅผ ๊ฐ์ ธ์ HandlerKey ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ handlerExecutions ๊ฐ์ฒด์ ์ ์ฅํ๋ค.
์ด๋ ๊ฒ ํ์ฌ ์ค์ ๋ url๋ณ๋ก ๋งคํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ํด๋์ค ๋จ์๊ฐ ์๋๋ผ ๋ฉ์๋ ๋จ์๋ก ๊ตฌ๋ถ์ง์ ์ ์๊ฒ ๋๋ค.HandlerKey
๊ตฌํinput url๊ณผ ์์ฒญ ๋ฉ์๋์ ์ข ๋ฅ๋ฅผ ๊ฐ์ง๋ค. ๋ํ key๋ก ์ฌ์ฉ๋๊ธฐ ์ํด equals์ hashCode์ ์ฌ์ ์๊ฐ ํ์ํ๋ค.