๐ป ์คํ๋ง ํต์ฌ ๊ธฐ์ - ๊ธฐ์ด
ํด๋น ๊ฐ์๋ ๊น์ํ๋์ ์คํ๋ง ํต์ฌ ์๋ฆฌ- ๊ธฐ์ด ๊ฐ์๋ฅผ ์๊ฐํ์ฌ ๊ณต๋ถํ ๋ด์ฉ์ ๊ฐ๋ตํ๊ฒ ๊ธฐ๋กํ๋ ๊ธฐ๋ก์ฅ
์คํ๋ง ํต์ฌ ์๋ฆฌ ๊ธฐ์ด ๊ฐ์
ํ์ | ์ ํ |
---|---|
Spring Framework, Spring Boot | Spring data, session, security, Rest Docs, Batcgh Cloud |
Spring Batch : ๋ฐฐ์น ์ฒ๋ฆฌ ๊ธฐ์ ์ ํนํ๋ ๊ธฐ๋ฅ ๐ง
๊ธฐ์ ๋ช | ์์ฝ |
---|---|
ํต์ฌ ๊ธฐ์ | ์คํ๋ง DI ์ปจํ ์ด๋, AOP, ์ด๋ฒคํธ ๋ฑ |
์น ๊ธฐ์ | ์คํ๋ง MVC, ์คํ๋ง WebFlux |
๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ | ํธ๋์ ์ , JDBC, ORM, XML |
๊ธฐ์ ํตํฉ | ์บ์, ์ด๋ฉ์ผ, ์๊ฒฉ์ ๊ทผ, ์ค์ผ์ค๋ง |
ํ ์คํธ | ์คํ๋ง ๊ธฐ๋ฐ ํ ์คํธ ์ง์ |
์ธ์ด | ์ฝํ๋ฆฐ, ๊ทธ๋ฃจ๋น |
์คํ๋ง์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์, ์ต๊ทผ์๋ ๊ธฐ๋ณธ
๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋๋ฐ ์ ์ฌ์ฉํ๋
๋จผ์ ์คํ๋ง์ ๊ณ ์ง ๋ฌธ์ ์ธ ์ค์ ์ ์ฝ๊ฒ ํด์ค๋ค.
์ฌ์ค Spring ํ๋ ์์ํฌ๋ง ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ก ๋ถํธ๋ฅผ ์ฌ์ฉํด์ Spring ์ ์ด๋ ค์์ ๋ชจ๋ฅด์ง๋ง ํ์คํ ์คํํฐ๋ง ๋ง๋ค๊ณ ์คํํ๋ ๊ฑด ํธํ๋ค ๐
์คํ๋ง์ด๋ผ๋ ๋ง์ ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋๋ค.
์คํ๋ง์ ์๋ฐ ์ธ์ด ๊ธฐ๋ฐ ํ๋ ์์ํฌ
์๋ฐ๋ ๊ฐ์ฒด์งํฅ ์ธ์ด
์คํ๋ง์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๊ฐ ๊ฐ์ง ๊ฐ๋ ฅํ ํน์ง์ ์ด๋ ค๋ด๋ ํ๋ ์์ํฌ
์คํ๋ง์ ์ข์ ๊ฐ์ฒด ์งํฅ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ๋์์ฃผ๋ Framework
DI ์ปจํ ์ด๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ํตํด์ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ํน์ง์ ์ ์ด๋ ค์ฃผ๋๊ฒ ํต์ฌ์ด๋ค
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช
๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์ด ์๋ ๋
๋ฆฝ๋ ๋จ์
๊ฐ์ฒด๋ค์ ๋ชจ์์ผ๋ก ํ์
ํ๊ณ ์ ํ๋ค. ๋ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๊ฐ์ฒด ์งํฅ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๋ค.
์ญํ ๊ณผ ๊ตฌํ์ผ๋ก ์ธ์์ ๊ตฌ๋ถํ๋ค.
์ด์ ์๋ ์๋์ฐจ ์ข
๋ฅ๊ฐ ๋ฐ๋์ด๋ ์๋์ฐจ์ ์ญํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฐ๋ฅํ๋ค.
์๋์ฐจ์ ์ธํฐํ์ด์ค์ ๋ฐ๋ผ์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ์ผ์ด๋ค.
์ด์ ์๋ฅผ ์ํด์ ์ด๋ ๊ฒ ๊ฐ๋ฐ๋์๋ค.
์ฆ ํด๋ผ์ด์ธํธ๊ฐ ๋ด๋ถ ๋ณ๊ฒฝ์ ๋ชฐ๋ผ๋ ์ฌ์ฉ๋ฒ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์ ๋ด์ฉ์ ๋ฌดํํ ํ์ฅ ๊ฐ๋ฅํ๋ค.
ํด๋ผ์ด์ธํธ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค ๐ง
์๋ ์์๋ฅผ ์ถ๊ฐ๋ก ํ์ธํด๋ณด์
๋ก๋ฏธ์ค, ์ค๋ฆฌ์ฃ ์ด๋ผ๋ ์ญํ ์ ๊ฐ ๋ฐฐ์ฐ๋ค์ด ๊ตฌํํ๋ค.
์ฆ ๊ตฌํํ๋ ์ฌ๋์ด ๋ฐ๋์ด๋ ์ญํ ์ ๋๊ตฐ๊ฐ๋ ํ ์ ์๋ค.
๊ตฌํํ๋ ์๊ฐ ๋ณธ์ธ์ ์ญํ ๋ง ์ํํด๋ ์๋ก๊ฐ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
์ด๊ฒ์ด ์ ์ฉํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๋ค๋ ๊ฒ์ด๋ค.
ex) ์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๋ ๋ ์ข์ ์๋์ ์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.
์ ๋ ฌ์ด๋ผ๋ ์ญํ ์ ๋ฒ๋ธ,์ฝ์ ์ ๋ ฌ์ด๋ผ๋ ๊ตฌํ์ด ์ํํ๋ฉด๋จ
์ญํ ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌํ๋ฉด ์ป๋ ์ฅ์ ์ ๊ฐ๋จํ๊ฒ ์์ฝํด๋ณด์
Java์์ ์ญํ ์ Interface, ๊ตฌํ์ ๊ตฌํํ ํด๋์ค ๋๋ ๊ฐ์ฒด
ex) ์ด์ ์ ๋ฌธ ๊ฐ์์์ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์์๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค๊ฐ ์ญํ , jdbc JPA ๋ฑ์ด ๊ตฌํ์ฒด
ํผ์์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ ์์
ํด๋ผ์ด์ธํธ : ์์ฒญ / ์๋ฒ : ์๋ต
ํด๋ผ์ด์ธํธ -----> ์๋ฒ
ํด๋ผ์ด์ธํธ -----> ์๋ฒ + ํด๋ผ์ด์ธํธ ----> ์๋ฒ
์ค๋ฒ๋ผ์ด๋ฉ ๋ ๋ฉ์๋๊ฐ ์คํ
๋คํ์ฑ์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์คํ ์์ ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์์
ํด๋์ค ์์์์๋ ์ค๋ฒ๋ผ์ด๋ฉ ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ(๋ฉค๋ฒ ์๋น์ค) --------> ๋ฉค๋ฒ ๋ฆฌํฌ์ง ํ ๋ฆฌ <---- (๋ฉ๋ชจ๋ฆฌ ๋ฆฌํฌ์งํ ๋ฆฌ, JDBC ๋ฆฌํฌ์งํ ๋ฆฌ)
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์คํ ์์ ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
ํ๋ ฅ์ด๋ผ๋ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ ์ํด์ผํจ
ํด๋ผ์ด์ธํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ฒ์ ๊ตฌํ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ๊ฐ๋ฅ(์ ์ฐํ๊ฒ!!!)
์ธํฐํ์ด์ค๋ฅผ ์์ ์ ์ผ๋ก ์ค๊ณํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค
์ฆ ๊ฐ๋ฐ ์์ ๋จ์ํ ๊ตฌํํ๋๊ฒ ์ค์ํ๊ฒ ์๋๋ผ ์ธํฐํ์ด์ค๋ก ํด๋น ๊ตฌํ์ฒด๊ฐ ์ด๋ค ์ญํ ์ ํ ์ง ๋๊ตฌ๋ ํ๋ ฅ ๊ด๊ณ๋ฅผ ๊ฐ์ง์ง ์๊ฐํ๋๊ฒ ์ค์
์ธํฐํ์ด์ค ์์ฒด๊ฐ ๋ณํด์ผํ๋ฉด ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ชจ๋์ ํฐ ๋ณ๊ฒฝ์ด ํ์ํจ
์ธํฐํ์ด์ค๋ฅผ ๋ณํ๊ฐ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ์ค๊ณํ๋๊ฒ ์ค์
์คํ๋ง์ ๋คํ์ฑ์ ๊ทน๋ํํด์ ์ด์ฉํ๊ฒ ํด์ค
IoC, DI๋ ๋คํ์ฑ์ ํ์ฉํด์ ์ญํ ๊ณผ ๊ตฌํ์ ํธ๋ฆฌํ๊ฒ ๋ค๋ฃฐ์ ์๊ฒ ํด์ค
์คํ๋ง์ ์ฌ์ฉํ๋ฉด ๊ตฌํ์ ํธ๋ฆฌํ๊ฒ ๋ณ๊ฒฝํ ์ ์์!
๊ฐ์ฒด์งํฅ ์ค๊ณ 5๊ฐ์ง ์์น : SOLID