
๐ข ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ์์ ์ฒ๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ (AOP, InterCeptor, Filter) ๊ณตํต์ ๋ฌด๋ฅผ ํ๋ก๊ทธ๋จ ํ๋ฆ ์, ์ค๊ฐ, ๋ค์ ์ถ๊ฐํ์ฌ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ์ฉํ๋ ๋ฐฉ์. → ๋ํ์ ์ธ ์๋ก Logging, ์ธ์ฆ, ์ธ๊ฐ, ์ธ์ฝ๋ฉ ๋ณํ๋ฑ์ด ์์ Interceptor์ Filter๋ Servlet ๋จ์์์ ์คํ๋๊ณ , AOP๋ ๋ฉ์๋์์ Proxyํจํด์ ํํ๋ก ์คํ๋จ ์์ฒญ์ด ๋ค์ด์ค๋ฉด Filter → Interceptor → AOP → Interceptor → Filter์์ผ๋ก ๊ฑฐ์น๊ฒ ๋จ ๐ Filter ์์ฒญ๊ณผ ์๋ต์ ๊ฑฐ๋ฅธ ๋ค ์ ์ ํ๋ ์ญํ ์ ํจ ํํฐ๊ฐ ๋์ํ๋๋ก ์ง์ ๋ ์์์ ์๋จ์์ ์์ฒญ ๋ด์ฉ์ ๋ณ๊ฒฝํ๊ฑฐ๋, ์ฌ๋ฌ๊ฐ์ง ์ฒดํฌ๋ฅผ ์ํ ์์์ ์ฒ๋ฆฌ๊ฐ ๋๋ ํ ์๋ต ๋ด์ฉ์ ๋ํด์๋ ๋ณ๊ฒฝํ๋ ์ฒ๋ฆฌ๋ ํจ..

๐ท DI : ์ธ๋ถ์์ ๋ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํด์ฃผ๋ ๋์์ธํจํด ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ํด๋์ค๋ค์ ๋ถ๋ฆฌํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์์ ์ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํด์ค์ผ๋ก์จ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ ์ฐ์ฑ์ ํ๋ณดํด์ฃผ๋ ์ญํ ์ ํจ ๐ ๊ฒฐํฉ๋๊ฐ ๋์๊ฑด ๋ฌด์์ผ๊น? ๊ฒฐํฉ๋๋ ๋ค๋ฅธ ๋ชจ๋๊ณผ์ ์์กด์ฑ์ ๋ปํจ ๋ชจ๋ ์์ ์ ์ํด ๋ค๋ฅธ ๋ชจ๋์ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ์ ๋ ( ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์์กดํ๋ ์ ๋์ ์ฒ๋ or ๋ชจ๋๊ณผ ๋ชจ๋๊ฐ์ ์ํธ ๊ฒฐํฉ ์ ๋๋ฅผ ๋ํ๋ ) ๊ฐํ ๊ฒฐํฉ : - ๊ฐ์ฒด ๋ด๋ถ์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๊ฐํ ๊ฒฐํฉ๋๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ - A ํด๋์ค ๋ด๋ถ์์ B๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ณ ์๋ค๋ฉด, B ๊ฐ์ฒด๋ฅผ C ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๊ฒฝ์ฐ์ Aํด๋์ค๋ ์์ ํด์ผํ๋ ๋ฐฉ์ ๋์จํ ๊ฒฐํฉ - ์ธ๋ถ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๋ ๊ตฌ์กฐ -..

์ด๋ฒ์ฃผ๋ ํด๋ก ์ฝ๋ฉ ์ฃผ์ฐจ๋ก ์ฐ๋ฆฌํ์ ์ํฐ๋์ ์ปค๋ฎค๋ํฐ๋ฅผ ํด๋ก ์ฝ๋ฉ ํ๊ธฐ๋กํ์๋ค โจ๏ธ ๋ด๊ฐ ๋งก์ ๊ธฐ๋ฅ์ ์นด์นด์ค ๋ก๊ทธ์ธ ๐ ์์์ ์ฌ์ ์ผ๋ ํ ์คํธ๋ถํฐ ์ฝ์ง ์์์ ธ์ ์ข์ ํ๊ณ ์๋ ์์ค์ ์ฒ์ฌ ์์๋์ ๋๋ถ์ผ๋ก ๋ฌด์๋ฌด์ํ ์๋ฌ์์ ๋ฒ์ด๋๊ณ .. ๋ค์๋ ๋๊ฐ์ ์ผ์ ๊ฒช์ง์ํด ํ๋ ํฌ์คํ .. ์์ง๋ง .. ! ๊ธฐ์ตํด ๋ด ..! ๐๐ป ๋์์ค ์นด์นด์ค ๋ก๊ทธ์ธ ! ์ฐ์ ๋๋ ํ๋ก ํธ์ ์ฐ๊ฒฐ ์ , ๋์ ๋ณด์ด๋ ์นด์นด์ค ๋ก๊ทธ์ธ ๋ฒํผ์ด ์๋ ์ํ์์์ ์นด์นด์ค ๋ก๊ทธ์ธ ์๋ ๋ฐฉ์์ ์ ์ด๋๋ ค๊ณ ํ๋ค. ๋ฒํผ์ด ์์ผ๋ฉด ๋ณ๋ก ์ด๋ ต์ง์์ !.. ์๋ง๋ ,, ์ฐ์ ์ฌ์ฉํ ์์ค์ฝ๋๋ ์๋์ ๊ฐ๋ค. 1 | User Controller @PostMapping("/loginKakao") public MsgResponseDto kakaoLogin(@Requ..

๐ ํธ๋์ญ์ ? ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋, ์ ์ฌํ ์์คํ ์์์ ์ํธ์์ฉ ๋จ์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ๋ ํธ๋์ญ์ ์ ์ ์ฉํ๋ฉด ๋ฐ์ดํฐ ์ถ๊ฐ, ๊ฐฑ์ , ์ญ์ ๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ ์ ์ํํ๋ค๊ฐ ์ฒ๋ฆฌ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ชจ๋ ์์ ์ ์์ํ๋ก ๋๋๋ ค์ฃผ๊ณ , ๋ชจ๋ ์์ ์ด ์ฑ๊ณตํด์ผ๋ง ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํจ ์คํ๋ง์ ์ด๋ ธํ ์ด์ ์ ์ด์ฉํ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค. ๐Transactional ์ด๋ ธํ ์ด์ ํด๋น ์ด๋ ธํ ์ด์ ์ ํด๋์ค๋, ๋ฉ์๋์ ๋ถ์ฌ์ค ๊ฒจ์ฐ ํด๋น ๋ฒ์ ๋ด ๋ฉ์๋๊ฐ ํธ๋์ญ์ ์ด ๋๋๋ก ๋ณด์ฅํ๋ค. ์ด์๊ฐ์ด ์ฌ์ฉํ๋๊ฒ์ ์ ์ธ์ ํธ๋์ญ์ ์ด๋ผ๊ณ ํ๊ณ , ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์ ์์ด ์ ์ธ๋ง์ผ๋ก ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค. โ Transactional ์ด๋ ธํ ์ด์ ์ ์๋ ์๋ฆฌ์ ํ๋ฆ @Transactional์ด ๋ถ์ ๋ฉ์๋..

๐ AOP ? : AOP(Aspect Oriented Programming) ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ : ์ด๋ค ๋ก์ง์ ๊ธฐ์ค์ผ๋ก ํต์ฌ์ ์ธ ๊ด์ , ๋ถ๊ฐ์ ์ธ ๊ด์ ์ผ๋ก ๋๋์ด ๊ทธ ๊ด์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ๋ชจ๋ํํ์ฌ ๊ฐ๋ฐํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ ์ ๊ทธ๋ฆผ์ ์๋ ๋ธ๋ญ๋ค ์ฒ๋ผ ์์ค์ฝ๋ ์์์ ๋ฐ๋ณต๋๋ ์ฝ๋๋ค์ ํฉ์ด์ง ๊ด์ฌ์ฌ๋ผ๊ณ ํ๊ณ , ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ Aspect๋ก ๋ชจ๋ํ + ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฌ์ฉํ๋๊ฒ์ด AOP์ ์ทจ์ง์ด๋ค. โจ AOP๋ก ๋๋์ด์ง๋ ๊ฐ๋ฐ์ ๋ ์ข ๋ฅ ๊ด์ : ์ ๋ฌด : ์ ๋ฌด ์ด์ธ ๋ถ๊ฐ ๊ธฐ๋ฅ(๋ก์ง, ์์ธ์ฒ๋ฆฌ) ๐ Aspect? : ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ๋ฌถ์ด์ ๋ชจ๋ํ ํ๊ฒ์ผ๋ก Advice์ Point Cut์ด ๋ค์ด๊ฐ๋ค. - Advice : ํด์ผํ ์ผ๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ - Join Point : ๋ฉ์๋ ์ค..

์คํ๋ง์ ํ๋ค๋ณด๋ฉด ์ง์ง ๋์ด์ด์ด์ด์ด๋ฌด ๋์ด์ด์ด์ด์ด์ด๋ฌด ๋ฌด์ํ๊ณ ์ถ์ง๋ง ๋ค์จ์ IOC,, ๋ ์จ์ DI๊ฐ ๊ณ์์์์์์ ๋์์ ์ด๊ฑธ ์ด์ ๋์ด์ ๋ฌด์ํ๊ณ ์ง๋๊ฐ์ ์์ ์ ๋๋ก ๋์จ๋ค. ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์คํ๋ง์ ๋ชจ๋ฅด๋์ !?!?!?!? ์ ๋ต์ Yes ์ธ๊ฐ๋ณด๋ค ใ .. ๊ทธ๋์ ์ฝ 2์ฃผ๊ฐ ์ธ๋ฉดํ์ง๋ง ์ค๋์ ํฐ๋ง์์ ๋จน๊ณ ์ง๋ฉดํ๊ธฐ๋กํ๋ค. ๋๋์ฒด IOC, DI๊ฐ ๋ญ๋ฐ ์ด๋ ๊ฒ ์ง์ฒ์ด๋๊ฑด๋ฐ ! ๐ง ๐ ๊ทธ๋์ DI, IOC๊ฐ ๋ญ๋ฐ? Dependency Injection(์์กด์ฑ ์ฃผ์ ) ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ค์ ์กฐ๋ฆฝ์ผ๋ก ๋ง๋ค์ด์ง๋๋ฐ, ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ์ฒดํ ํ์๊ณผ ์กฐ๋ฆฝํ ํ์์ด ์๋ค. ์ผ์ฒดํ : ๋ถํ(dependency) B๋ฅผ A์์ ์ง์ ์ ์ดํ์ฌ B์ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋๋ฉด, B์ ๊ฐ์ฒด๋ ๋ณ๊ฒฝ๋๊ฒ ๋๋ค. : ๊ฒฐํฉ๋ ฅ์ด ๋์์ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ฐ..
์ด๋ฒ์ฃผ๋ถํฐ [์คํ๋ง ์ ๋ฌธ์ ์ํ ์๋ฐ ๊ฐ์ฒด ์งํฅ์ ์๋ฆฌ์ ์ดํด]๋ผ๋ ์ฑ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํฐ๋๋ฅผ ์งํํ๊ธฐ๋กํ์๋ค. ์๊ฐ๋ง ํ๊ณ ๊ตฌ๋งคํ์ง ์๊ณ ํ๋ฃจ ์ดํ ํ์ง๋ถ์ง ์ง๋๊ณ ์์๋๋ฐ ๋ ๋๋ฅผ ์ผ๊นจ์์ฃผ์ ๋๊ธฐ๋๊ป ๋ฌดํํ ๊ฐ์ฌ๋ฅผ ... ๐ค ๋ชฉํ๋ ๋ง๋๊ธฐ์ ์ ํ ์ฑํฐ์ฉ ์ฝ๊ณ ๊ฐ์ ๊ณต์ ํ๊ณ ์ถ์ ๋ถ๋ถ ์ ๋ฆฌํด์ค๊ธฐ! ์ค๋์ ํค์๋๋ '์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ' ์ด๋ค. ๐ ์คํ๋ง ํ๋ ์์ํฌ์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๊ณ ์คํ๋ง ํ๋ ์ ์ํฌ์ ์ฌ์ฉ ๋ชฉ์ ์ ? : ์๋ฐ ๊ธฐ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์ํ ํฌ๊ด์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๊ตฌ์ฑ ๋ชจ๋ธ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ : ์ฃผ์ ๋ชฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ถ๋ถ์ ์ฐ๊ฒฐํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ธฐ์ ์ ์ ๊ณตํ๊ณ , ์ ๋ด ์ฒ๋ฆฌ ํ๋ ๊ฒ ๊ทธ๋ผ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ฌด์์ผ๊น? : ์ํฐํ๋ผ..
๐ซ ์คํ๋ง Bean ๊ทธ๊ฒ์ ๋ํด ์์๋ณด์ ๋น(Bean)์ IOC ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๊ณ ์๋ ์๋ฐ์ ๊ฐ์ฒด๋ฅผ ๋น์ด๋ผ๊ณ ํ๋ค. (+) new ์ฐ์ฐ์๋ก ์์ฑํ ๊ฐ์ฒด๋ ๋น์ด ์๋! Spring์์์ ๋น์ ApplicationContext๊ฐ ์๊ณ ์๋ ๊ฐ์ฒด(=ApplicationContext๊ฐ ๋ง๋ค๊ณ , ๊ทธ ์์ ๋ด๊ณ ์๋ ๊ฐ์ฒด)๋ฅผ ์๊ธฐํ๋๋ฐ IOC ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌ๊ฐ๋ ํ๋ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ์ ์ผ๋ก ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. 1๏ธโฃ Component Scan์ ํตํ Bean๋ฑ๋ก : @Component ์ด๋ ธํ ์ด์ ์ ๋ฑ๋กํ ๊ฒฝ์ฐ์๋ Spring์ด ์ด๋ ธํ ์ด์ ์ ํ์ธํ์ฌ ์ด ๊ฐ์ฒด๋ Bean์ด์ผ!ํ๊ณ ๋ฑ๋กํ๋ค. *) Component ์ธ์๋ ์ปดํฌ๋ํธ ์ด๋ ธํ ์ด์ ์ ์์์ ๋ฐ๋ @Controller, @Service, @Reposi..
์คํ๋ง ์๋ จ์ ์์ด๋กํ๋ฉด Spring Skill ์ด๋๋ค ์งฑ ๋ฉ ใ ์ด๋ฒ ์กฐ๋ณ๊ณผ์ ๋ ๋งค์ผ ํค์๋ ํ๋์ฉ ๊ณต๋ถํ๋๊ฑธ๋ก ํด๋ด์ผ๊ฒ ๋ค ๋ ๋งค์ผ ์กฐ๊ธ์ฉ ํ๋๊ฒ ์ข์ ๐ ๐ 1. ์ธ์ฆ๊ณผ ์ธ๊ฐ ๋ญ๊ฐ ๋ค๋ฅธ๊ฑด๋ฐ? IT ๋ณด์ ์ ๊ณ์์ ์ผํ๋ฉด์ 3A๋ ์ผํ๋ฉด์ ์๋๋ฃฉ ๋ฐฑ-๋ฐฑ ํ๊ฒ ๋ค์ด๋ดค๋ค. AAA๊ฐ ๋ฌด์์ ๋ปํ๋๋ฉด Authentication(์ธ์ฆ), Authorization(๊ถํ), Accounting(๊ณ์ ๊ด๋ฆฌ)๋ฅผ ์๋ฏธํ๋ค. ์ค๋์ ๊ทธ ์ค์์ ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ๋ํด ๋ค์ ๋ณต๊ธฐํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋ ค๊ณ ํ๋ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ์ ์ ์ธ์ฆ(Authentication) : ํด๋น ์ฌ์ฉ์๊ฐ ๋ณธ์ธ์ด ๋ง๋์ง ํ์ธํ๋ ๊ณผ์ ์ธ๊ฐ(Authorization) : ํด๋น ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ ์์์ ์คํํ ์ ์๋ ๊ถํ์ด ์๋๊ฐ๋ฅผ ํ์ธํ๋ ๊ณผ์ ์ฝ๊ฒ ๋งํ๋ฉด ์ธ..

์ ๋ชฉ์ ๋ด๊ฐ ์์ฆ ๊ตฌ๊ธ๋งํ ๋ ์์ฃผ ์ ์ฉํ๋ ํค์๋์ธ๋ฐ ใ ใ ๊ฐ ๋ญ๋ฐ ๋ผ๋ ํค์๋์ด๋ค ๊ทผ๋ฐ ์ง์ง ๊ฑฐ์ง๋ง ์ํ๊ณ ์ด๊ฑธ๋ก ๊ฒ์ํ๋ฉด ๋์ ์์ค๊ณผ ๋น์ทํ๋ถ๋ค์ด ํ ๋งบํ์ ์ฝ๊ฒ ์ค๋ช ํด์ฃผ์ ํฌ์คํ ๋ค์ด ์์ ๋๋ ์๋ก ์๊ฒ๋ ์ง์์ ์ ๋ฆฌํ๋ ํฌ์คํ ์ ์ด ํค์๋๋ก ์จ๋ณผ๊น ํจ ์ด๊ฑธ ์ฐพ์๋ณด๊ฒ ๋ ๊ณ๊ธฐ๋ ์์์ผ ๊ธฐ์ ๋งค๋์ ๋ ์ํ๋ ์ฐ๋ฆฌ์กฐ ๋์ฅ๋์ ์งํ๋๋ฅผ ๋ณด๊ณ ๊ธฐ์ ๋งค๋์ ๋์ด CRUD ๊ธฐ๋ฅ์ ๋ค ๊ตฌํํ์ จ์ผ๋ฉด ์๋น์ค์์ @Transection ์ด๋ ธํ ์ด์ ์ ์ ์ธํ๊ณ ๊ตฌํํด๋ณด์ธ์ ~ ๋ผ๊ณ ํํธ๋ ์์์ฑ์ ๋๋ค! ๋ผ๊ณ ์๋ ค์ฃผ์ ์ ์ฐพ์๋ณด๊ฒ๋์๋ค. ์ฌ์ค ์๋ค ๋ค ์กฐ์ธํด์ฃผ์ ๊ฒ ์๊ฐ์ด ๋์ง ์์๋ ๋๋ ์์ค์ฝ๋์์ ๋ฐ์๋ก ํธ๋์ญ์ ์ด๋ ธํ ์ด์ ๋ง ๋นผ๋ณด๊ณ ใ ใ ์คํํ๋๋ฐ ์ ์๋๋ ๊ฒ ์ฐพ์๋ณด๋ Transectional ์ด๋ ธํ ์ด์ ์์ด UPdate๋ฅผ..
๐Annotation ์ด๋ ธํ ์ด์ ์ ์ฌ์ ์ ์ผ๋ก๋ "์ฃผ์"์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์๋ฐ ์ฝ๋์ @๋ฅผ ์ด์ฉํด ์ฃผ์์ฒ๋ผ ๋ฌ์ ํน์ํ ์๋ฏธ๋ฅผ ๋ถ์ฌํด์ฃผ๋ ์ญํ ์ ํ๋ค. ํ๋ก๊ทธ๋จ์ ๊ดํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ณ , ์ฝ๋์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ์ ํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๐ SpringBootApplication Spring Boot๋ฅผ ์๋์ผ๋ก ์คํ์์ผ์ฃผ๋ ์ด๋ ธํ ์ด์ 1) @ComponentScan์ ํตํด ์ปดํฌ๋ํธ๋ค์ Bean์ผ๋ก ๋ฑ๋กํ๋ค 2) @EnableAutoConfiguration์ ํตํด ๋ฏธ๋ฆฌ ์ ์ํด๋ ์๋ฐ ์ค์ ํ์ผ๋ค์ Bean์ผ๋ก ๋ฑ๋กํ๋ค. * Spring Bean์ด๋ : Spring IOC ์ปจํ ์ด๋์ ์ํด ์์ฑ๋๊ณ , ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด ์๋ฐ ๊ฐ์ฒด๋ฅผ Bean ์ด๋ผ๊ณ ํจ @Configuration : ์คํ๋ง IOC ์ปจํ ์ด๋์๊ฒ ํด๋น..

๐ถ๐ซ๏ธ 1. Rest REST๋ REpresentational State Tranfer์ ์ค๋ง๋ก, ์์์ ์ ์ํ๊ณ ์์์ ๋ํ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ ์ ๋ฐ์ ๋ํ ๊ท์น REST ์ ์ฐ๋๊ฑด๋ฐ? ์์คํ ๋ถ์ฐ - RESTfull API๋ฅผ ์งํค๊ธฐ๋ง ํ๋ฉด ์ํธ๊ฐ์ ํต์ ์ด ๊ฐ๋ฅํด์ ธ์ ํฐ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๊ฒ ๋จ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋์ - RESTfull API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฒผ์์ก๋ค. ๋ฐ๋ผ์ ๋ค์ํ ์ข ๋ฅ์ ํด๋ผ์ด์ธํธ์ ๋์์ด ๊ฐ๋ฅํด์ง โ๏ธ 2. Put๊ณผ Patch์ ์ฐจ์ด PUT๊ณผ PATCH ๋ฉ์๋๋ ์์์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ค์ํ๋ HTTP ๋ฉ์๋์ด๋ค. ๋ ๋ฉ์๋ ๋ค ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ์์นซ ์๋ชป์ฐ๊ธฐ ์ฌ์ด๋ฐ ์ด ๋ ๋ฉ์๋์ ์ฐจ์ด๋ ๐๐ป put ์์ฒญ ํ์ด๋ก๋๋ฅผ ์ฌ..

๐ฝ 1. ์คํ๋ง์ ํด๋ ๊ตฌ์กฐ - ์คํ๋ง ํด๋๋ฅผ ๋ง๋ค๋ Controller, Service, Repository .. ๋ฑ ์ด๊ฒ ๋ค ๋ฌด์์ธ๊ณ ? ํ๋ฉด์ ๋จธ๋ฆฌ๊ฐ ์ํ ๋ค. - ๊ทธ๋์ ์ ๋ฆฌํด ๋ณธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๋๋ต์ ์ผ๋ก ํด๋์ ์ฌ์ฉํ๋ ๋ถ๋ถ์ ์์ ๊ฐ๊ณ , ๋ณด์๋ ๋ถ ๋ค์ค์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์ผ ์ธ์ ๋ ์ง ์์ ํ์ โจ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ง๋๋ฒ ํฌ์คํ ์ ์ธ์ฉํ์ฌ ์ ์ผ ์ค์ํ ๋ถ๋ถ์ธ Controller, Service, Repository ์ ๋ณต๊ธฐํด๋ณด๋ฉด ๐ซฅ Controller Controller๋ ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํ๋ค. Model๊ณผ View๋ ์๋ก ์ฐ๊ฒฐ๋์ด์์ง ์์์ Controller๊ฐ ์ด๋ค์ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํจ ํ๋ก์ธ์ค : ์ฌ์ฉ์ ์์ฒญ ๐ Controller ๐ Model ๐ View Rep..
๐ง๐ป๐ป 1. JPA? ์ค๋์ ํค์๋ JPA๋ Java Persistence API์ ์ค์๋ง๋ก "์๋ฐ ์ง์์ ORM ํ์ค ๊ธฐ์ "์ด๋ผ๊ณ ํ๋ค. Java ๊ฐ์ฒด์ ์์์ฑ์ ์ํ ์๋ฐ์ ํ์คํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋งํ๋ ๊ฒ ๊ทธ๋ผ ๋ ORM์ ๋ญ๋๋ฉด Object-relationla Mapping ์ผ๋ก ๊ฐ์ฒด๋ ๊ด๊ณํ DB๋ฅผ ๋งคํํด์ฃผ๋ ํ๋ ์ ์ํฌ๋ค ๊ทธ๋ผ ์ฌ๊ธฐ์ ๋ ๊ด๊ณํ DB๋ ? - 2์ฐจ์ ํ ์ด๋ธ(Table) ํํ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ํค์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค - ์ข ์์ฑ์ ๊ด๊ณ๋ก ํํํ๋๊ฒ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ - ํ์ฌ ๋ง์ด ์ฌ์ฉ๋๋ Oracle, MySQL, SQL Server๋ฑ์ด ๋ค ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ ๐ 2. ๊ทธ๋ผ JPA๋ฅผ ์ ์ฌ์ฉํ ๊น? ์์ฆ ์๋ก ๋ฐฐ์ฐ๋ ๊ฐ๋ ์์์ ๋ง๋ฌ์๋ ๋ด ๋ฃจํด์ ์ด๊ฒ ๋ญ๋ฐ ..

์ค๋๋ถํฐ ์์ํ Spring ๋ฐ๋์ .. ๐ ๋ญ๊ฐ ๋จธ๋ฆฌ์ ๊ต์ฅํ ๋ง์ ๋ด์ฉ์ด ์ค์ณ ์ง๋๊ฐ๋๋ฐ ๋ฐ์ง๊ฐ๋์ด๋ผ๋ ๋ถ์ก๊ณ ์ ๊ธ์ ์จ๋ณธ๋ค.. ๐ 1. ์คํ๋ง๊ณผ Spring Boot ์คํ๋ง๋ถํธ์ ์ ์๋ฅผ ๋ด๋ฆฌ๊ธฐ ์ํด ๊ตฌ์ ์๋๊ป ์ง๋ฌธ ๋๋ ธ๋๋ฐ ์ญ์๋ ๊ธฐ๊น๋ ๋๋ต์ ํด์ฃผ์ จ๋ค ๐ ์คํ๋ง ๋ถํธ๋ ์คํ๋ง์ ๋ ์ฝ๊ฒ ์ด์ฉํ๊ธฐ ์ํ ๋๊ตฌ์ธ๋ฐ, Spring์ ์ด์์ ๊ต์ฅํ ๋๊ณ ๊น๊ณ ๋ง์ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง๊ณ ์๋ค๋ณด๋ ํ๊ฒฝ์ค์ ์ด ์์ฒญ ๋ณต์กํ๋ฐ ์ด๊ฑธ ๊ฐ์ ํ๊ธฐ ์ํด ๋์จ๊ฒ ๋ฐ๋ก Spring Boot๋ผ๊ณ ํ๋ค. ๐ ๊ทธ๋ฆฌ๊ณ ์คํ๋ง์ ๋ํ ์ ์๋ฅผ ๋ด๋ ค๋ณด๋ฉด ์๋ฐ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ํด์ด๋ค. ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์๊ฒ๋, ์๋ฐ ๊ธฐ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ข ํฉ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ธ์ โจ ..