Spring-study๐ฑ/Spring-Basic60 Section 1-5. ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์คํ๋ง ๋ค์ ์คํ๋ง์ผ๋ก - ์คํ๋ง ์ด์ผ๊ธฐ์ ์ ๊ฐ์ฒด ์งํฅ ์ด์ผ๊ธฐ๊ฐ ๋์ค๋๊ฐ? ์คํ๋ง์ ๋ค์ ๊ธฐ์ ๋ก ๋คํ์ฑ + OCP / DIP๋ฅผ ๊ฐ๋ฅํ๊ฒ ์ง์ DI(Dependency Injection) : ์์กด๊ด๊ณ, ์์กด์ฑ ์ฃผ์ DI ์ปจํ ์ด๋ ์ ๊ณต ํด๋ผ์ด์ธํธ ์ฝ๋์ ๋ณ๊ฒฝ ์์ด ๊ธฐ๋ฅ ํ์ฅ ์ฝ๊ฒ ๋ถํ์ ๊ต์ฒดํ๋ฏ์ด ๊ฐ๋ฐ ์คํ๋ง์ด ์๋ ์์ ์๋ ์ด๋ค ๊ฐ๋ฐ์๊ฐ ์ข์ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ฐ์ ํ๋ ค๊ณ OCP, DIP ์์น์ ์งํค๋ฉด์ ๊ฐ๋ฐ์ ํด๋ณด๋, ๋๋ฌด ํ ์ผ์ด ๋ง์๋ค. ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ํฌ๋ค. ๊ทธ๋์ ํ๋ ์์ํฌ๋ก ๋ง๋ค์ด๋ฒ๋ฆผ ์์ํ๊ฒ ์๋ฐ๋ก OCP, DIP ์์น๋ค์ ์งํค๋ฉด์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, ๊ฒฐ๊ตญ ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค๊ฒ ๋๋ค. (๋ ์ ํํ๋ DI ์ปจํ ์ด๋) DI ๊ฐ๋ ์ ๋ง๋ก ์ค๋ช ํด๋ ์ดํด๊ฐ ์ ์๋๋ค. ์ฝ๋๋ก ์ง๋ด์ผ ํ์์ฑ์ ์๊ฒ๋๋ค! ์ ๋ฆฌ ๋ชจ.. 2022. 3. 31. Section 1-4. ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น(SOLID) ํด๋ฆฐ์ฝ๋๋ก ์ ๋ช ํ ๋ก๋จธํธ ๋งํด์ด ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น์ ์ ๋ฆฌ SRP : ๋จ์ผ ์ฑ ์ ์์น (single responsibility principle) OCP : ๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle) LSP : ๋ฆฌ์ค์ฝํ ์นํ ์์น (Liskov substitution principle) ISP : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (Interface segregation principle) DIP : ์์กด๊ด๊ณ ์ญ์ ์์น (Dependency inversion principle) 1. SRP : ๋จ์ผ ์ฑ ์ ์์น ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค. ํ๋์ ์ฑ ์์ด๋ผ๋ ๊ฒ์ ๋ชจํธํ๋ค. ํด ์๋, ์์ ์๋ ์๋ค. ๋ฌธ๋งฅ๊ณผ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. ๋๋ฌด ํฌ๊ฒํ๊ฑฐ๋, ์๊ฒํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก .. 2022. 3. 31. Section 1-3. ์ข์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช ๋ ์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์, ์ฆ "๊ฐ์ฒด"๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค. ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.(ํ๋ ฅ) ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ฐ์ฒด ์งํฅ ํน์ง ์ถ์ํ ์บก์ํ ์์ ๋คํ์ฑ ์ ์ฐํ๊ณ , ๋ณ๊ฒฝ์ด ์ฉ์ด?? ๋ ๊ณ ๋ธ๋ญ ์กฐ๋ฆฝํ๋ฏ์ด ํค๋ณด๋, ๋ง์ฐ์ค ๊ฐ์ ๋ผ์ฐ๋ฏ์ด ์ปดํจํฐ ๋ถํ ๊ฐ์ ๋ผ์ฐ๋ฏ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ณ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ๋ฉด์ ๊ฐ๋ฐํ ์ ์๋ ๋ฐฉ๋ฒ ๊ทธ๊ฒ์ด ๋ฐ๋ก ๋คํ์ฑ(Polymorphism) ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ ๊ฐ์ง ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋คํ์ฑ์ ํตํด์ ๋ฌดํํ ํ์ฅ์ด ๊ฐ๋ฅํด์ง๋ค... 2022. 3. 31. Section 1-2. ์คํ๋ง์ด๋? ์คํ๋ง ์ํ๊ณ ํ์ ์คํ๋ง ํ๋ ์ ์ํฌ(์คํ๋ง์ ๊ฐ์ฅ ํต์ฌ) ์คํ๋ง ๋ถํธ(์ฌ๋ฌ ์คํ๋ง ๊ธฐ์ ๋ค์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์์๊ฒ ํจ) ์ ํ ์คํ๋ง ๋ฐ์ดํฐ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ CRUD๋ฅผ ๋์์ฃผ๋ ๊ธฐ์ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์๋ค. ์คํ๋ง ์ธ์ ์ธ์ ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋ค. ์คํ๋ง ์ํ๋ฆฌํฐ ๋ณด์๊ด๋ จ ์คํ๋ง Rest Docs API ๋ฌธ์๋ฅผ ํธ๋ฆฌํ๊ฒ ๋์์ค๋ค. ์คํ๋ง ๋ฐฐ์น ๋ฐฐ์น ์ฒ๋ฆฌ(๋ฐ์ดํฐ ์ ์ฅ ๊ด๋ จ)์ ํนํ๋ ๊ธฐ์ ์คํ๋ง ํด๋ผ์ฐ๋(ํด๋ผ์ฐ๋ ๊ธฐ์ ) https://spring.io/projects Spring | Projects Spring Framework Provides core support for dependency injection, transaction management, web apps,.. 2022. 3. 31. Section 1-1. ์คํ๋ง์ ํ์๋ฐฐ๊ฒฝ ์๋ฐ์ง์์ ํ์ค๊ธฐ์ ์๋ 'EJB'๊ฐ ์์๋ค. ์ด์ ์ฌ๋ฌ ๊ธฐ์ ๋ค์ด EJB๋ฅผ ์ด์ฉํด ์ฌ๋ฌ ๋ก์ง ๋ฐ ์์คํ ์ ๊ตฌํํ๋ ์๋๋ฅผ ํ์๋ค. ๋ฐฐํฌ๋ ์๋๊ณ ์ฌ๋ฌ๊ฐ์ง๋ก ์์ ์ด ์๋์๋ค. - ์๋ฐ์ง์์ ํ์ค ๊ธฐ์ ๊ฑฐ์ ์ข ํฉ์ ๋ฌผ์ธํธ๋ผ๊ณ ๋ณด๋ฉด๋๋ค. - ์ปจํ ์ด๋ ๊ธฐ์ , ์ค์ ์ ์ํ ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ถ์ฐ ์ฒ๋ฆฌ ๊ธฐ์ ๋ฑ ๊ณ ๊ธ๊ธฐ์ ์ ๋ํ ์ง์์ด ์๋์๋ค. - ๋น์ entity bean(ORM๊ธฐ์ ๋ก์ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์ง์๊ณ ์๋ฐ๊ฐ์ฒด๋ฅผ DB์ ๋ฃ๋ ๊ธฐ์ )๋ ๊ฐ์ง๊ณ ์์๋ค. - ๊ฐ๊ฒฉ์ด ๋งค์ฐ ๋น์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ์ํด ์์ฒ๋ง์์ด ๋ค์๋ค.(ํ์ฌ๋ spring boot, tomcat๋ก ๋ฌด๋ฃ ๊ตฌ์ถ๊ฐ๋ฅ) EJB ์ง์ฅ - ์ด๋ก ์ ์ผ๋ก๋ ์ ๋ง ์ข์ง๋ง ์์ฒญ ์ด๋ ต๊ณ ๋ณต์กํ๊ณ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ค์๊ฒ๋ ๊ณ ํต์ด์๋ค. - interface๋ฅผ ๋ชจ๋ ๊ตฌํํด์ผํ.. 2022. 3. 31. ์ด์ 1 ยทยทยท 9 10 11 12 ๋ค์