โถ ํ๋ฃจ
=> ๊ณต๋ถ ๊ด๋ จ
1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH5๊น์ง ์ฝ๊ณ ์ ๋ฆฌ
2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง ํ ํผ๋๋ฐฑ
3) ๊ธฐ์ ์ง๋ฌธ ๋ต๋ณ ๋ชปํ ๋ถ๋ถ ๋ ธ์ ์ ์ ๋ฆฌ
=> ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ
1) DB ERD ๊ทธ๋ ค๋๊ธฐ & ์คํ๋ ๋์ํธ ์ ๋ฆฌ
2) git ํ์
โถ ๋ฌธ์ ์ ๋ฆฌ
1. ์์์ ์ค๋ณต๊ณผ ๋ฒ๋์ผ๋ก ๋ํดํ ์ฝ๋
ํด๊ฒฐ > enum ํด๋์ค 3๊ฐ๋ฅผ ์์ฑํ์ฌ ํด๊ฒฐ
package Enum;
public enum PrintGameResult {
WIN_RESULT("๋์ด ์ด๊ฒผ์ต๋๋ค."),
DRAW_RESULT("๋น๊ฒผ์ต๋๋ค."),
LOSE_RESULT("์ปดํจํฐ๊ฐ ์ด๊ฒผ์ต๋๋ค.");
private final String printGameResult;
PrintGameResult(String printGameResult) {
this.printGameResult = printGameResult;
}
public String getPrintGameResult() {
return printGameResult;
}
}
=> 3๊ฐ์ค ํ๋์ธ ํด๋์ค. ๋ฐํ ์ String ํ์ ์ด ์๋ enum ํ์ ๊ทธ ์์ฒด๋ฅผ ๋ฐํํ๋๋ก ๋ ธ๋ ฅํด๋ณด์
2. ๋ชจ๋ธ์ ์ฑ ์ ๋ถ๋ฆฌ
> ์ฌ์ฉ์, ์ปดํจํฐ, ์นด์ดํธ, ๊ฒ์ ๋ชจ๋ธ์ ์ฑ ์์ ๋ถ๋ฆฌํ์ฌ ์์ฑ
โถ ๊ฐ์ธ ๊ณต๋ถ
2์ฅ ์๋ฐ์ ์ ์ฐจ์ ,๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ ์คํ ๊ณผ์
- ์ฌ์ฉ์๊ฐ .java file์ ์์ค์ฝ๋ ์์ฑ
- JDK(Java Development Kit)์์ javac.exe ์ปดํ์ผ๋ฌ๋ฅผ ์ด์ฉํ์ฌ .java file(Object file)์ ์์ฑ
- JRE(Java Runtime Environment)์์ java.exe ํ๋ก๊ทธ๋จ ์คํ๊ธฐ๋ฅผ ์ด์ฉํ์ฌ JVM์์์ ์คํ
- JRE๋ ํ๋ก๊ทธ๋จ ์์ main() ๋ฉ์๋๊ฐ ์กด์ฌํ๋์ง ํ์ธํจ, java.lang ํจํค์ง๋ฅผ Static์์ญ์ Load, Class๋ฅผ Static์์ญ์ Load
- Stack์์ญ์ main()๋ฉ์๋๋ฅผ ์ ์ฌ, main()๋ฉ์๋ ์คํํ๋ ์ ์์ ํ๋ผ๋ฏธํฐ ๋ณ์์ธ args์คํ์์ฑ
- ์๋ฐ T๋ฉ๋ชจ๋ฆฌ ์์ญ
- Static : ํด๋์ค ์์ญ
- Stack : ๋ฉ์๋ ์์ญ
- Heap : ๊ฐ์ฒด ์์ญ
- ๋ฉ์๋ ๋ธ๋๋ฐ์คํ : parameter, return์ ์ํด์๋ง ๋ฉ์๋ ์ฌ์ด์ ๊ฐ์ด ์ ๋ฌ๋ ๋ฟ ์๋ก ๋ด๋ถ์ ์ง์ญ ๋ณ์๋ฅผ ๋ณผ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ
- ๋ฉํฐ ์ค๋ ๋(Multi Thread) : T๋ฉ๋ชจ๋ฆฌ ์์ญ์ Stack์์ญ์ ์ค๋ ๋ ๊ฐ์๋งํผ ๋ถํ ํด์ ์ฐ๋ ๊ฒ
- Stack์์ญ๋ง ๋๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Static, Heap์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ํ๋ก์ธ์ค ๋๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉ
- ์ ์ญ๋ณ์ ๋ฌธ์ ์ : ์ค๋ ๋ A, ์ค๋ ๋ B๊ฐ ์ ์ญ๋ณ์๋ฅผ ๊ฐ์ setํ๋ ๋ถ๋ถ์์ ๊ฐ์ด ๊ผฌ์ผ ์ ์์
- ๋ฉํฐ ํ๋ก์ธ์ค(Multi Process) : ๋ค์์ T๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๋ ๊ตฌ์กฐ
- ๊ฐ ํ๋ก์ธ์ค๋ ๊ฐ์์ T๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ๊ฐ ๊ณ ์ ์ ๊ณต๊ฐ์ด๋ฏ๋ก ์๋ก ์ฐธ์กฐํ ์ ์์
- ๋ฉํฐ ์ค๋ ๋์ ๋นํด ๋์ ์์ ์ฑ์ ๋ณด์ฅ, ํ์ง๋ง ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ
3์ฅ ์๋ฐ์ ๊ฐ์ฒด ์งํฅ
- ํด๋์ค : ๋ถ๋ฅ์ ๋ํ "๊ฐ๋ "
- ๊ฐ์ฒด : ์ธ์์ ์กด์ฌํ๋ ์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ
- ํด๋์ค๋ "๋ถ๋ฅ"์ ์ด๋ฆ์ผ๋ก, ๊ฐ์ฒด๋ "์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ"์ ์ด๋ฆ์ผ๋ก ์๋ช
ํด์ผ ํจ
- ์กฐ๋ฅ์ ๋์ด๋? ์กฐ๋ฅ์ ํฌ๊ธฐ๋? --> ์กฐ๋ฅ๋ "๋ถ๋ฅ"์ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ ํด๋น์ง์์ ๋ต์ ํ ์ ์์ผ๋ฏ๋ก ํด๋์ค์ด๋ค.
- bird์ ๋์ด๋? bird์ ํฌ๊ธฐ๋? --> ๊ฐ์ ์ด์ ๋ก ๋ต์ ํ ์ ์์ผ๋ฏ๋ก "๋ถ๋ฅ"", ํด๋์ค์ด๋ค.
- ํญ๊ท์ ๋์ด๋? ํญ๊ท์ ํฌ๊ธฐ๋? --> ํญ๊ท์ "๋ถ๋ฅ"์ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ ํด๋น์ง์์ ๋ต์ ํ ์ ์์ผ๋ฏ๋ก ํด๋์ค์ด๋ค.
- ๋ฝ๋ก๋ก์ ๋์ด๋? ๋ฝ๋ก๋ก์ ํฌ๊ธฐ๋? --> ๋ฝ๋ก๋ก๋ผ๋ ์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ์ ํน์ง์ด๋ฏ๋ก, ๋๋ต์ด ๊ฐ๋ฅํจ
- ex) ์กฐ๋ฅ bird = new ์กฐ๋ฅ(); < ์ธ์คํด์ค๋ช ์ ์ ๋ชป ์์ฑํ ์์ >
- ํด๋์ค๋ "๋ถ๋ฅ"์ ์ด๋ฆ์ผ๋ก, ๊ฐ์ฒด๋ "์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ"์ ์ด๋ฆ์ผ๋ก ์๋ช
ํด์ผ ํจ
- ๊ฐ์ฒด์งํฅ์ 4๋ ํน์ฑ
- ์บก์ํ : ์ ๊ทผ ์ ์ด์ priate, [default], protected, public์ ํตํ ์ ๊ทผ ์ ํ
- private : ๋ณธ์ธ๋ง ์ ๊ทผ๊ฐ๋ฅ
- [default] : ๊ฐ์ ํจํค์ง ๋ด์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ
- protected : ์์/๊ฐ์ ํจํค์ง๋ด์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ
- public : ๋ชจ๋๊ฐ ์ ๊ทผ ๊ฐ๋ฅ
- ์์์ ๋ฐ์ง ์์๋ค๋ฉด ๊ฐ์ฒด ๋งด๋ฒ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ์๋ฅผ ์ด์ฉํด ์ ๊ทผํด์ผ ํ๋ค.
- ์ ์ ๋ฉค๋ฒ๋ ํด๋์ค๋ช .์ ์ ๋ฉค๋ฒ ํ์์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ๊ถ์ฅํจex) ๋น๊ถ์ฅ ๊ฐ์ฒด๋ช .์ ์ ๋ฉค๋ฒ) ์ด์๊ธฐ.์ธ๊ตฌ
- ex) ๊ถ์ฅ ํด๋์ค๋ช .์ ์ ๋ฉค๋ฒ) ์ฌ๋.์ธ๊ตฌ
- ์์ : ๋ถ๋ชจ - ์์ ๊ด๊ณ๋ณด๋ค๋, ๋๋ฌผ - ํฌ์ ๋ฅ์ ๊ฐ์ ๊ตฌ์ฒดํ, ๋ถ๋ฅ๋์ ๊ฐ์ด ๋ถ๋ชจ์ "ํ์ฅ"์ ๊ฐ๋
- ์์์ ์์ ํด๋์ค์ ํน์ฑ์ "์ฌ์ฌ์ฉ"ํ๋ ๊ฒ
- ์์์ ์์ ํด๋์ค์ ํน์ฑ์ "ํ์ฅ"ํ๋ ๊ฒ
- ์์์ is a kind of์ ๊ด๊ณ๋ฅผ ๋ง์กฑํด์ผ ํจ
- ํ์ ํด๋์ค๋ ์์ ํด๋์ค๋ค. ( ex) ํฌ์ ๋ฅ๋ ๋๋ฌผ์ด๋ค. )
- ์๋ฐ๋ ์ด์งธ์ ๋ค์ค ์์์ ์ง์ํ์ง ์๋๊ฐ? : ๋๊ฐ ์ด์์ ์์ ํด๋์ค๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค์ ํน์ง ์ค ์์ ํด๋์ค์ ๊ณตํต ํ์(๋ฉ์๋)๊ฐ ์กด์ฌํ ๋ ํ์ ํด๋์ค๋ ์ด๋ ํ ๊ฒ์ ๋ฐ๋ผ์ผ ํ๋๊ฐ? ํ๋ ๋ ผ๋ฆฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์. ๋ค์ค ์์์ผ๋ก ์ธํ ๋๋ณด๋ค ์ค์ด ํฌ๋ค๊ณ ํ๋จํ์ฌ Java์์๋ ๋ค์ค์์์ ์ง์ํ์ง ์๋๋ค.
- ์ธํฐํ์ด์ค ๋?
- Java๋ ๋ค์ค์์์ ์ง์ํ์ง ์์ง๋ง, ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ๋ค์ค์์์ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์
- ๊ตฌํ ํด๋์ค is able to ์ธํฐํ์ด์ค์ ๊ฐ๋ ( ๊ตฌํ ํด๋์ค๋ ์ธํฐํ์ด์ค "ํ ์ ์๋ค." )
- ์ธํฐํ์ด์ค๋ ๊ตฌํ ํด๋์ค์ ํ ์ ์๋ ๊ฒ์ ์ด๋ฆ์ "์ ์"ํ ๊ฒ์ด๋ฏ๋ก, ์๋ช ์ "~ํ ์ ์๋"์ผ๋ก ์๋ช ํ๋ ๊ฒ์ด ์ข์
- ์์๊ณผ T ๋ฉ๋ชจ๋ฆฌ
- ํ์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ์์ ํด๋์ค์ ์ธ์คํด์ค๋ ํจ๊ป ์์ฑ๋๋ค.ex) Animal pingu = new Penguin();
- ex) Penguin pororo = new Penguin();
- ์ถ์ํ : ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ๋ถํดํด์ ๊ด์ฌ ์์ญ(์ดํ๋ฆฌ์ผ์ด์
๊ฒฝ๊ณ)์ ์๋ ํน์ฑ๋ง ๊ฐ์ง๊ณ ์ฌ์กฐํฉ ํ๋ ๊ฒ
- ๊ตฌ์ฒด์ ์ธ Class์๋ ๊ต์ฅํ ๋ง์ ํน์ง๊ณผ, ํ์๊ฐ ์กด์ฌํ์ง๋ง, ๋ด๊ฐ ๋ง๋ค๊ณ ์ํ๋ ์์ญ์์ ๋ณด๋ฉด ํน์ง, ํ์๊ฐ ๋งค์ฐ ์ ํ์ ์ผ๋ก ์ค๊ณ๊ฐ๋ฅํจ
- ์ฌ์ฉํ๊ณ ์ ํ๋ ํน์ง, ํ์๋ฅผ ์ถ์ถํ๋ ๊ฒ์ "๋ชจ๋ธ๋ง"์ด๋ผ๊ณ ํจ
- ex) ์ฌ๋์ด๋ผ๋ ๊ตฌ์ฒด์ Class๋ ์๋ ฅ/๋ชธ๋ฌด๊ฒ/ํ์กํ/ํค/๋์ด/์ง์ /๋จน๋ํ์/์ผํ๋ํ์/์ด๋ํ๋ํ์ ๋ฑ ๋งค์ฐ ๋ง์ ํน์ง๊ณผ ํ์๋ฅผ ๊ฐ์ง์ง๋ง, ๋ด๊ฐ ๋ง๋ค๊ณ ์ํ๋ "์ํ"์ดํ๋ฆฌ์ผ์ด์ ์์์ ์ฌ๋์ "๊ณ ๊ฐ"์ผ๋ก ํ์ ๋๋ฉฐ, ๋์ด/์ง์ /์ผํ๋ํ์์ ๋๋ก๋ง ํน์ง๊ณผ ํ์๋ฅผ ์ถ์ถํ ์ ์๋ค.
- ์ถ์ํ์ T๋ฉ๋ชจ๋ฆฌ
- ex) Mouse๋ ์ด๋ฆ/๋์ด/์ ์ฅ/์ฒด์ค/์ข /๊ผฌ๋ฆฌ๊ฐฏ์/๋จน๋ํ์/์๋ํ์/๋ฌด๋ํ์/๋ฌ๋ฆฌ๋ํ์ ๋ฑ ๋ง์ ํน์ง/ํ์๋ฅผ ๊ฐ์ง์ง๋ง ๋ด๊ฐ ๊ตฌํํ ๋ ค๋ ๋ชฉ์ ์ ํน์ง์ ์ด๋ฆ/๋์ด/๊ผฌ๋ฆฌ๊ฐฏ์/๋ ธ๋๋ถ๋ฅด๋ํ์ ๋ง ํ์ํ๋ฉด ์๋์๊ฐ์ด ์ ์ํ ์ ์์
- ๋คํ์ฑ : ์ค๋ฒ๋ผ์ด๋ฉ / ์ค๋ฒ๋ก๋ฉ
- ์ค๋ฒ๋ผ์ด๋ฉ(OverRiding) : ๊ฐ์ ๋ฉ์๋ ์ด๋ฆ/๊ฐ์ ์ธ์ ๋ชฉ๋ก/์์ ํด๋์ค์ ๋ฉ์๋ "์ฌ์ ์"
- ์ค๋ฒ๋ก๋ฉ(OverLoading) : ๊ฐ์ ๋ฉ์๋ ์ด๋ฆ/๋ค๋ฅธ ์ธ์๋ชฉ๋ก/๋ค์์ ๋ฉ์๋๋ฅผ "์ค๋ณต ์ ์"
- ๋คํ์ฑ๊ณผ T๋ฉ๋ชจ๋ฆฌex) Animal pingu = new Penguin();
- ex) Penguin pororo = new Penguin();
- ์บก์ํ : ์ ๊ทผ ์ ์ด์ priate, [default], protected, public์ ํตํ ์ ๊ทผ ์ ํ
- ํผ์ฉํ์ฌ ์ฌ์ฉํ๋ ๊ฐ๋
- ํด๋์ค ๋งด๋ฒ = ์ ์ ๋งด๋ฒ = ์คํํฑ ๋ฉค๋ฒ
- ๊ฐ์ฒด ๋ฉค๋ฒ = ์ค๋ธ์ ํธ ๋ฉค๋ฒ = ์ธ์คํด์ค ๋ฉค๋ฒ
- ํ๋ = ์์ฑ = ํ๋กํผํฐ
- ํจ์ = ๋ฉ์๋
- ๋ณ์ ๊ณต๊ฐ = ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
4์ฅ ์๋ฐ๊ฐ ํ์ฅํ ๊ฐ์ฒด ์งํฅ
- abstract class : ์ถ์ํด๋์ค๋ก, ์ถ์๋ฉ์๋๋ฅผ ์์ฑ ๊ฐ๋ฅ, ์ถ์ํด๋์ค๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
- ์ถ์๋ฉ์๋ : ๋ฉ์๋ ์ ์ธ์ ์์ง๋ง, ๋ชธ์ฒด๋ ์๋ ๋ฉ์๋
- ์ถ์๋ฉ์๋๋ ์์ํ ํ์Class๊ฐ OverRidingํ์ง ์์ผ๋ฉด ์ปดํ์ผ ์์ ์ ์๋ฌ๊ฐ ๋ฐ์ํจ
- ์์ฑ์(๊ฐ์ฒด ์์ฑ์ ๋ฉ์๋)
- ๊ฐ๋ฐ์๊ฐ ์๋ฌด๋ฐ ์์ฑ์๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉด, ์๋ฐ์์๋ ๊ธฐ๋ณธ์์ฑ์(ํ๋ผ๋ฏธํฐ ์๋)๋ฅผ ๋ง๋ค์ด ์ง์ํจ
- ์ธ์๊ฐ ์๋ ์์ฑ์๋ฅผ ํ๋๋ผ๋ ๋ง๋ ๋ค๋ฉด, ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ง ์๋๋ค.
- static block
- ํด๋์ค๊ฐ ๋ก๋ฉ๋๊ณ ํด๋์ค ๋ณ์๊ฐ ์ค๋น๋ ํ ์๋์ผ๋ก ์คํ๋๋ ๋ธ๋ก, ์ฃผ๋ก ํด๋์ค ๋ณ์๋ฅผ ์ด๊ธฐํ์ํค๋ ์ฝ๋๋ฅผ ๋๋ค.
- ํ ํด๋์ค ์์ ์ฌ๋ฌ ๊ฐ์ static ๋ธ๋ก์ ๋ฃ์ ์ ์๋ค.
- ์์
}์คํ ๊ฒฐ๊ณผstatic String name = "ํ๊ธธ๋"; // ๋ณ์ ์ ์ธ์ ๊ฐ์ ์ด๊ธฐํ์ํค๋ ๋ฌธ์ฅ์ ํฌํจํ ์ ์๋ค. static { System.out.println("static...1"); name = "์๊บฝ์ "; }
- ๊ฐ์ฒด๋ฉค๋ฒ๋ ํด๋์ค๊ฐ static์์ญ์ ์๋ฆฌ ์ก์ ํ, ๊ฐ์ฒด ์์ฑ์๋ฅผ ํตํด ํ์ ์์ฑ๋จ
- ํด๋์ค์ static๋ถ๋ก์ด ์คํ๋๊ณ ์์ ๋๋ ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ ํ๋๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ static๋ธ๋ก์์๋ ๊ฐ์ฒด ๋งด๋ฒ ์ ๊ทผ ํ ์ ์์
}์คํ ๊ฒฐ๊ณผstatic String name = "ํ๊ธธ๋"; // ๋ณ์ ์ ์ธ์ ๊ฐ์ ์ด๊ธฐํ์ํค๋ ๋ฌธ์ฅ์ ํฌํจํ ์ ์๋ค. static { System.out.println("static...1"); name = "์๊บฝ์ "; } static { System.out.println("static...2"); name = "์ ๊ด์"; }
- main ๋ฉ์๋ ์์! static...1 static...2 ํํํ`
- public static void main(String[] args) { System.out.println("main ๋ฉ์๋ ์์!"); Student.name = "ํํํ"; System.out.println(Student.name); }
- `static class Student {
- ํด๋์ค ์ ๋ณด๋ ํด๋น ํด๋์ค๊ฐ ์ฝ๋์์ ๋งจ ์ฒ์ ์ฌ์ฉ๋ ๋ T๋ฉ๋ชจ๋ฆฌ์ static์์ญ์ ๋ก๋ฉ๋๋ฉฐ, ์ด๋ **๋จ ํ๋ฒ ** ํด๋น ํด๋์ค์ static๋ถ๋ก์ด ์คํ๋จ
- ํด๋์ค๊ฐ ์ ์ผ ์ฒ์ ์ฌ์ฉ๋ ๋๋ ๋ค์ ์ธ๊ฐ์ง์ค ํ๋์
- ํด๋์ค์ ์ ์ ์์ฑ์ ์ฌ์ฉํ ๋
- ํด๋์ค์ ์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋
- ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ต์ด๋ก ๋ง๋ค ๋
- main ๋ฉ์๋ ์์!`
- public static void main(String[] args) { System.out.println("main ๋ฉ์๋ ์์!"); }
- `static class Student {
- instanceof ์ฐ์ฐ์
- ๋ง๋ค์ด์ง ๊ฐ์ฒด๊ฐ ํน์ ํด๋์ค์ ์ธ์คํด์ค์ธ์ง ํ์ธํ๋ ์ฐ์ฐ์๋ก true, false๋ฅผ ๋ฐํํจif(์ด์๊ธฐ instanceof ์ฌ๋) --> true
- ex) ์ฌ๋ ์ด์๊ธฐ = new ์ฌ๋()
- interface
- interface๋ ์ ์ ์์(static final)์ ์ถ์๋ฉ์๋(public abstract)๋ง ๊ฐ๋ฅํจ
- ๋ฐ๋ก ๋ช ์ํ์ง ์์๋, ์ ์ ์์/์ถ์๋ฉ์๋๋ก ์ฒ๋ฆฌํ์ฌ์ค
- this ํค์๋
- ์ง์ญ ๋ณ์์ ์์ฑ(๊ฐ์ฒด ๋ณ์, ์ ์ ๋ณ์)์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ง์ญ๋ณ์๊ฐ ์ฐ์ ํจ
- ๊ฐ์ฒด ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด this๋ฅผ ์ ๋์ฌ๋ก ์ฌ์ฉํจ
- ์ ์ ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํด๋์ค๋ช ์ ์ ๋์ฌ๋ก ์ฌ์ฉํจ
1. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋?
⇒ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ : ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง ๋ณด๋ค ๋ฌด์์ ํ ๊ฒ์ธ์ง ์ค๋ช
⇒ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ : ์์ ํจ์๋ฅผ ์กฐํฉํ์ฌ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋ฐฉ์ & ๋ถ์ ํจ๊ณผ๊ฐ ์๋ ์์ ํจ์๋ฅผ 1๊ธ ๊ฐ์ฒด๋ก ๊ฐ์ฃผํ์ฌ ๋งค๊ฐ๋ณ์๋ก ๋๊ธฐ๊ฑฐ๋ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ์ฐธ์กฐ ํฌ๋ช ์ฑ์ ์งํฌ ์ ์๋ค.
- ์์ ํจ์๋?๋ถ์ํจ๊ณผ๋
- ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋จ
- ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ ์๋ฆฌ์์ ์์ ํจ
- ๊ฐ์ฒด์ ํ๋๊ฐ์ ์ค์
- ์์ธ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์คํ ์ค๋จ
- ์ฝ์ ๋๋ ํ์ผ I/O๊ฐ ๋ฐ์ํจ
- ⇒ ๋ถ์ ํจ๊ณผ๋ฅผ ์ ๊ฑฐํ ํจ์
- ์ผ๊ธ ๊ฐ์ฒด๋?
⇒ ๋ณ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ๋ด์ ์ ์๋ค
⇒ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ ๊ฐ๋ฅ
⇒ ๋ฐํ ๊ฐ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
⇒ ํ ๋น์ ์ฌ์ฉ๋ ์ด๋ฆ๊ณผ ๋ฌด๊ดํ๊ฒ ๊ณ ์ ํ ๊ตฌ๋ณ์ด ๊ฐ๋ฅํ๋ค
์ฐธ์กฐ ํฌ๋ช ์ฑ์ด๋
- ๋์ผํ ์ธ์์ ๋ํด ๋์ผํ ๊ฒฐ๊ณผ ๋ฐํ
- ์ด๋ฅผ ํตํด ๊ธฐ์กด์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์๊ณ ์ ์ง๋๋ค
⇒ ํจ์๋ ์ผ๊ธ๊ฐ์ฒด!
2. ์๋ฐ์์๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ป๊ฒ ๊ตฌํํ ๊น?
- Functional Interface
⇒ 1๊ฐ์ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ ์ธํฐํ์ด์ค
⇒ ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์๋ฐ์ ๋๋ค์์ ํจ์ํ ์ธํฐํ์ด์ค๋ก๋ง ์ ๊ทผ์ด ๋๊ธฐ ๋๋ฌธ
- Runnable
- Supplier
- Consumer
- Function<T, R>
- Predicate
3. ๋๋ค๋?
⇒ ๋๋ค ํํ์์ ๋ฉ์๋๋ก ์ ๋ฌํ ์ ์๋ ์ต๋ช ํจ์๋ฅผ ๋จ์ํํ ๊ฒ ์ด๋ฆ์ด ์๊ณ ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ, ๋ฐ๋, ๋ฐํ ํ์, ๋ฐ์ ๊ฐ๋ฅ ์์ธ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง
- ๋๋ค์ ์ฅ๋จ์
- ๋๋ค๋ ํจ์, ๋ฉ์๋ ์ธ์๋ก ์ ๋ฌํ๊ฑฐ๋ ๋ณ์๋ก ์ ์ฅ ๊ฐ๋ฅ
- ๊ฐ๊ฒฐ์ฑ → ์ต๋ช ํด๋์ค์ฒ๋ผ ๋ง์ ์ฝ๋๋ฅผ ๊ตฌํํ ํ์ ์์
- ๋ค์ค CPU๋ฅผ ํ์ฉํ๋ ํํ๋ก ๊ตฌํ๋์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ๋ฆฌํจ
- ๋ถํ์ํ ๋ฃจํ๋ฌธ์ ์ญ์ ๊ฐ๋ฅํ๋ฉฐ, ํจ์์ ์ฌํ์ฉ์ด ์ฉ์ดํจ
- ๊ฐ๋ฐ์์ ์๋๊ฐ ๋ช ํํด์ ธ ๊ฐ๋ ์ฑ์ด ํฅ์
- ๋จ์ํ ๋ชจ๋ ์์๋ฅผ ์ํ ์ ๋๋ค์์ด ์ข ๋ ๋๋ฆด ์ ์์
- ๋๋ฒ๊น ์ ํจ์ ์ฝ ์คํ ์ถ์ ์ด ๋ค์ ์ด๋ ค์
- ์ง๋์น๊ฒ ๋จ๋ฐ ์ ์ฝ๋๊ฐ ์ด๋ ต๊ณ ์ง์ ๋ถํด์ง
- ๋ฌด๋ช ํจ์๋ ์ฌ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํจ
- ์ฅ์
4. ์คํธ๋ฆผ์ด๋?
- ๋ฐ์ดํฐ์ ํ๋ฆ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ, ํจํน, ๋นํธ ๋ฑ์ ์ผ๋ จ์ ์ฐ์์ฑ์ ๊ฐ๋ ํ๋ฆ์ ์๋ฏธ
5. ์ง๋ ฌํ๋?
- ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ, ๊ฐ์ฒด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ์ ์ฐ๊ธฐ ์ํด ์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ฒ
- ์ฃผ๋ ๋ชฉ์ : ๊ฐ์ฒด๋ฅผ ์ํ ๊ทธ๋๋ก ์ ์ฅํ๊ณ ํ์ํ ๋ ๋ค์ ์์ฑํด์ ์ฌ์ฉํ๋ ๊ฒ
6. OSI 7๊ณ์ธต
- TCP์ UDP๋ ์ด๋ ๊ณ์ธต?
- Http ํ๋กํ ์ฝ์ ์ด๋ค๊ฑธ ์ฌ์ฉํ๊ณ ์๋?
- ๋ฒ์ ๋ณ ์ฐจ์ด
- ⇒ 7๊ณ์ธต, ๋น์ฐ๊ฒฐ์ฑ ํ๋กํ ์ฝ
- Http ํ๋กํ ์ฝ์ ์ด๋ค๊ฑธ ์ฌ์ฉํ๊ณ ์๋?
- ⇒ 4๊ณ์ธต
URI (Uniform Resource Identifier)
- ์ธํฐ๋ท ์์์ ๋ํ๋ด๋ ๊ณ ์ ์๋ณ์
- ์ ์ผํจ
URL (Uniformed Resource Locator)
- ํ๋กํ ์ฝ ํฌํจ
- ํด๋น ์์์ path ์๋ฏธ
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ดํธ ๋๋ฉ์ธ์ ์์ฃผ ์๋ฏธํ๋ ํธ
- ์น ๋ฟ๋ง ์๋๋ผ ์ปดํจํฐ ๋ดํธ์ํฌ ์์ ์์์ ๋ชจ๋ ๋ํ๋ผ ์ ์๋ค
URN (Uniformed Resource Name)
- ํ๋กํ ์ฝ์ ํฌํจํ์ง ์์
- ํด๋น ์์์ ์ด๋ฆ์ ์๋ฏธํจ
- ๋ ๋ฆฝ์ ์ธ ์์ ์ง์์
- page ์ดํ ๋ถ๋ถ๊น์ง ํฌํจ
1. URI ๋ ๋คํธ์ํฌ ์ ์์์ ๊ฐ๋ฆฌํค๋ ์ผ์ข ์ ๊ณ ์ ์๋ณ์(ID) ์ด๋ค.
2. URL, URN ์ URI ์ ํฌํจ๋๋ ๊ฐ๋ ์ด๋ฉฐ URL ์ ์์์ ์์น, URN ์ ์์์ ์ด๋ฆ ์ ์๋ฏธํ๋ค.
โถ ์์ ๋ด์ฉ
Spring IOC
- IOC (Inversion Of Controll) : ์ ์ด์ ์ญํ
- Container ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์
๊ฒฐํฉ๋
- ์ฝ๋์ ํ ์์๊ฐ ๋ค๋ฅธ ๊ฒ๊ณผ ์ผ๋ง๋ ๊ฐ๋ ฅํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง
- ⇒ ํ ๊ฐ์ฒด ์์์ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผํ ๋ ๋ ๊ฐ์ฒด๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ
- ⇒ ๊ฒฐํฉ๋๊ฐ ๋์ผ๋ฉด ์ ์ง๋ณด์์ ์ข์ง ์๋ค. (๊ฒฐํฉ๋ ํด๋์ค๋ ๋ณ๊ฒฝํด์ค์ผ ํ๊ธฐ ๋๋ฌธ)
⇒ ๊ฒฐํฉ๋๋ฅผ ๋จ์ด๋จ๋ฆฌ๋ ๊ฒ์ด ๊ด๊ฑด!
- ๋คํ์ฑ์ ์ด์ฉ → ์ธํฐํ์ด์ค ์ด์ฉ
- Container๋ฅผ ์ด์ฉ → ํฉํ ๋ฆฌ ๋์์ธ ํจํด
Container
- ๊ฐ์ฒด์ ์์ฑ, ์ด์ฉ, ์๋ฉธ ๋ฑ์ ๊ฐ์ฒด์ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ๋ฅผ ๋ด๋นํจ
- IoC : Container ๊ธฐ๋ฅ์ด ๋จ
IoC ๊ตฌํ ๋ฐฉ๋ฒ
- Dependency Lookup
- Dependency Injection
Factory Pattern
- GOF์ ๋์์ธ ํจํด ์ค ํ๋
- ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ณตํต์ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ์์ฑํจ์ผ๋ก ๊ทธ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ์ฝ๋์์ ์์ฑ ๊ฐ์ฒด์ ์ง์ ๊ฒฐํฉ๋์ง ์๊ฒ ํ๋ ค๋ ๊ฒ
ํด๋์ค์์ ๊ฒฐํฉ์ ์์ ๋ ๋ฒ
- ๊ฐ์ฒด๋ฅผ ๋๊ฐ ์์ฑํด์ค๋ค๋ฉด ์์ฑ ๊ฒฐํฉ์ด ์ค์ด๋๋ฉฐ ๊ฒฐํฉ์ ์์จ ์ ์๋ค
- ๊ฐ์ฒด๋ฅผ ๋์ ์์ฑํด์ ๋๊ฒจ์ฃผ๋ ์ญํ
- ์ค์ ์ด๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋์ง ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๋ชจ๋ ๋์ผ ํ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅ
- ์ธํฐํ์ด์ค ์ด์ฉ → ํ์ ์ ๊ฐ์ง๋ง ๋ค๋ฅธ ๊ฐ์ฒด์ ใ ใ
- ์๋ฏธ ์๋ ๊ฐ์ ์์ํ
- ํด๋์ค์ ์์ฑ ๊ท์น ์ ๊ณต (์ถ์ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋)
- ์ธํฐํ์ด์ค๋ก ์ฐธ์กฐ๋ณ์ ์์ฑ ํ ๋ชจ๋ ๊ตฌํ ํด๋์ค์ ์ธ์คํด์ค ์ ์ฅ ๊ฐ๋ฅ
- ⇒ ๋ถ๋ชจ ์ฐธ์กฐ๋ณ์(์ธํฐํ์ด์ค)๋ก ๋ฉ์๋ ํธ์ถ ์ ์์ ์ธ์คํด์ค์ ์ค๋ฒ๋ผ์ด๋ ๋ฉ์๋ ํธ์ถ
- ⇒ ์ค๋ฒ๋ผ์ด๋์ ์ํ ๋คํ์ฑ - ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋ ๊ฐ์!
- Impl : ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ํด๋์ค
- Factory Class
Spring Container
- Container ๊ฐ์ฒด ๋๋ Factory ๊ฐ์ฒด
- Spring Framework์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํจ
- ⇒ ๊ฐ๋ฐ์๊ฐ ์๋ Spring Container๊ฐ ๊ฐ์ฒด ๊ด๋ฆฌ - Spring IoC
- ⇒ Spring Bean Configuration File(XML)๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
- Spring Container๋ ํจํค์ง๊ฐ ํฌํจ๋ ํด๋์ค๋ฅผ ์ ๊ณต๋ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ด๋ฆฌ
- ⇒ Spring Container์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด : Spring Bean
- ⇒ Spring Container๋ ๋ฆฌํ๋ ์ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ (class.forname()์ผ๋ก classLoader์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋์ ๋ก๋ฉํ์ฌ ์์ฑ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด ์์ฑ → ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ)
- ๊ฐ์ฒด ์์ฑ์ ๊ธฐ์กด Spring bean์ ์ ๊ณต๋ฐ์ ์์กด๊ด๊ณ ์ค์ ๊ฐ๋ฅ (Property ์๋ฆฌ๋จผํธ ์ด์ฉ)
- Spring Container ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฐ์ฒด
- Bean Configuration File(XML)์ bean ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ ๋ชจ๋ ํด๋์ค๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ก ์์ฑํ์ฌ ๊ฐ๊ณ ์๋ค
- ⇒ Spring Bean Configuration File(XML)์ ์ ๊ณต๋ฐ์ Spring Bean์ ์์ฑํ์ฌ ๊ด๋ฆฌ
- ⇒ ์คํ๋ง ๋น ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๊ณ ์ปจํ ์ด๋๋ ๋ง๋ค์ด์ง๋ ๊ฒ์
- ApplicationContext.getBean(String beanName) : Spring Bean์ ๊ตฌ๋ถํ๋ ์๋ณ์(beanName) ์ ์ ๋ฌ๋ฐ์ Spring Container๋ก๋ถํฐ Spring Bean์ ๊ฒ์ํ์ฌ ๋ฐํํ๋ ๋ฉ์๋
- ⇒ Object ํ์ ์ผ๋ก Spring Bean์ ๋ฐํํ๋ฏ๋ก ๋ช ์์ ๊ฐ์ฒด ํ๋ณํํ์ฌ ์ฌ์ฉ
- ⇒ ์ ๋ฌ๋ฐ์ beanName์ Spring Bean์ด ์๋ ๊ฒฝ์ฐ NoSuchBeanDefinitionException ๋ฐ์
- ApplicationContext ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ ๋ฉ์๋
- ⇒ Spring Container๊ฐ ๊ด๋ฆฌํ๋ ๋ชจ๋ Spring Bean ์ ๊ฑฐ
- Spring Container ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฐ์ฒด
- ⇒ Bean Configuration File์ bean ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ ํด๋์ค๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ก ์์ฑํ์ง ์๊ณ getBean() ๋ฉ์๋ ํธ์ถ์ ์์ฑ
- ApplicationContext.getBean(String beanName, Class<T> clazz) : Spring Bean์ ๊ตฌ๋ถํ๋ ์๋ณ์ (beanName)์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ํด๋์ค(Clazz)๋ฅผ ์ ๋ฌ๋ฐ์ Spring Container ๋ก๋ถํฐ Spring Bean์ ๊ฐ์ฒด ํ๋ณํํ์ฌ ๋ฐํํ๋ ๋ฉ์๋
- Spring Container๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ ๊ณต๋ฐ์ ์ฌ์ฉ
IoC ์ปจํ ์ด๋
- Spring Container : ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์๊ฐ, XML ์ค์ ํ์ผ์ ๋ฑ๋ก๋ Bean๊ฐ์ฒด๋ค์ด ์ด๊ธฐํ ๋จ
Spring Container๋ก๋ถํฐ Spring Bean์ ์ ๊ณต๋ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
⇒ Bean Configuration File(XML)์ ์ด์ฉํ์ฌ bean ์๋ฆฌ๋จผํธ๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค๋ฅผ Spring Bean์ผ๋ก ๋ฑ๋ก
Bean
- Spring Container์๊ฒ Spring Bean ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์๋ฆฌ๋จผํธ
- ⇒ Spring Bean : Spring Container์ ์ํด ๊ด๋ฆฌ๋๋ ํด๋์ค(๊ฐ์ฒด)
- class ์์ฑ : Spring Bean์ผ๋ก ๋ฑ๋ก๋ ํด๋์ค๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์ - ํ์ ์์ฑ
- ⇒ class ์์ฑ๊ฐ์ ์ดํด๋ฆฝ์ค์ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์์ฑํ๋ ๊ฒ์ ๊ถ์ฅ
- id ์์ฑ : Spring Bean์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์(beanId & beanName)๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ id ์์ฑ ๋์ name ์์ฑ์ ์ฌ์ฉํ์ฌ ์๋ณ์ ์ค์ ๊ฐ๋ฅ
- ⇒ id ์์ฑ๊ฐ์ ํด๋์ค๋ช ์ด๋ฆ(๋ถ๋ชจ ์ธํฐํ์ด์ค ์ด๋ฆ)์ ์ด์ฉํ์ฌ ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅ
- ⇒ id ์์ฑ๊ฐ์ class ์์ฑ์ด ์ค์ ๋ ๊ฒฝ์ฐ ํด๋์ค ์ด๋ฆ์ ์ด์ฉํ์ฌ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์์ฑ
- init-method ์์ฑ : Spring Bean ๊ฐ์ฒด ์์ฑ ํ ํ๋ฒ๋ง ํธ์ถ๋์ด ์ด๊ธฐํ ์์ ์ ์คํํ๊ธฐ ์ํ ๋ฉ์๋ ์ด๋ฆ์ ์์ฑ๊ฐ์ผ๋ก ์ค์ - ์๋ ์์ฑ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
- destroy-method ์์ฑ : Spring Bean ๊ฐ์ฒด ์๋ฉธ ์ ํ๋ฒ๋ง ํธ์ถ๋์ด ๋ง๋ฌด๋ฆฌ ์์ ์ ์คํํ๊ธฐ ์ํ ๋ฉ์๋ ์ด๋ฆ์ ์์ฑ๊ฐ์ผ๋ก ์ค์ - ์๋ ์์ฑ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
- lazy-init ์์ฑ : false & true๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ false(๊ธฐ๋ณธ) : Spring Container๋ฅผ ์ด๊ธฐํํ ๋Spring Bean ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์์ฑ
- ⇒ true : Spring Bean ๊ฐ์ฒด๋ฅผ ์ ๊ณต๋ฐ์ ๋ ์์ฑ (getBean() ํธ์ถํด์ผ ์คํ๋จ)
์ฑ๊ธํค ํด๋์ค
- ์ฑ๊ธํค ํด๋์ค : ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์ ๊ณตํ๊ธฐ ์ํด ์์ฑ๋ ํด๋์ค
- ⇒ Spring Container๋ ๋ฆฌํ๋ ์ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๊ฐ์ฒด ์์ฑํจ
- =⇒ ์์ฑ์๊ฐ ์๋ํ ๋์ด ์์ด๋ ๋ฆฌํ๋ ์ ๊ธฐ๋ฅ์ ์ํด ์์ฑ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ฆฌํ๋ ์ ๊ธฐ๋ฅ์ ์ํด ํด๋์ค๊ฐ ์ ์ฅ๋ ํ ์ ์ ์์ญ์ ๋ช ๋ น์ด ์คํ๋์ด ๊ฐ์ฒด ์์ฑ ⇒ ์ ์ ์์ญ์์ ์์ฑ๋ ๊ฐ์ฒด์ Spring Container์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๊ฐ ์กด์ฌ → ๊ฐ์ฒด๊ฐ 2๊ฐ๋ง๋ค์ด์ง!!
- factory-method ์์ฑ : ์ฑ๊ธํค ํด๋์ค์์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์์ฑ ๊ฐ ์ค์
- ⇒ Spring Container์ ์ํด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ์ ์ ์์ญ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ๊ณต๋ฐ์ Spring Bean์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
Depends-on
- Spring Container๋ bean ์๋ฆฌ๋จผํธ ์ ์ธ ์์๋๋ก ๋ฑ๋ก๋ ํด๋์ค๋ฅผ Spring Bean ๊ฐ์ฒด๋ก ๋ง๋ ๋ค
- depends-on ์์ฑ : bean ์๋ฆฌ๋จผํธ๋ฅผ ๊ตฌ๋ถํ๋ ์๋ณ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ ์์ฑ๊ฐ์ผ๋ก ์ค์ ๋ bean ์๋ฆฌ๋จผํธ์ ํด๋์ค๋ฅผ ๋จผ์ Spring Bean ๊ฐ์ฒด๋ก ์์ฑ
import
- ๋ค๋ฅธ Bean Configuration File์ Spring Bean ์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ์ ํฌํจํ๋ ์๋ฆฌ๋จผํธ
- resource ์์ฑ : Bean Configuration File์ ๊ฒฝ๋ก๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
Bean ๊ฐ์ฒด์ Scope
Scope ์์ฑ
- Spring Bean ๊ฐ์ฒด์ ์์ฑ ๊ฐฏ์(singleton : ๊ธฐ๋ณธ ๋๋ prototype) ๋๋ ์ฌ์ฉ๋ฒ์(request ๋๋ session) ์ค ํ๋๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- bean ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ ํด๋์ค๋ก Spring Bean ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์์ฑํ์ฌ ์ ๊ณต
- bean ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ ํด๋์ค๋ก Spring Bean ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ ์์ฑํ์ฌ ์ ๊ณต
- ⇒ lazy-init ์์ฑ๊ฐ์ ๋ฐ๋์ true๋ก ์ค์ ํ์ฌ ์ ๊ณต
- scope ์์ฑ๊ฐ์ผ๋ก singleton์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ
๋ค์์ฃผ๋ DI (Dependency Injection)
โถ ํ์ด๋ ํ๋ก์ ํธ
> ๋์ผํ ์ปฌ๋ผ๋ค์ ๊ฐ์ง๋ ํ ์ด๋ธ์ ํฉ์น๊ธฐ
> ๊ตฌ์ฒดํ๋ ์ปฌ๋ผ ์ถ๊ฐ
> ์ถ์ํ๋ ์ ํ์ง๋ค์ ๋ฐ๋ก ํ ์ด๋ธ์ ๊ด๋ฆฌ
> git ์ดํด๋ฆฝ์ค ํ์ ํ๋ก์ ํธ ์์ฑ ํ ์ปค๋ฐ
'Legacy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022.03.08~03.10 ์ ๊ธฐ๋ก (0) | 2022.03.09 |
---|---|
2022.03.07 ์ ๊ธฐ๋ก (0) | 2022.03.07 |
2022.03.03 ์ ๊ธฐ๋ก (0) | 2022.03.03 |
2022.02.28์ ๊ธฐ๋ก (0) | 2022.02.28 |
2022.02.27์ ๊ธฐ๋ก (0) | 2022.02.27 |