๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Legacy

2022.03.05~03.06 ์˜ ๊ธฐ๋ก

by GroovyArea 2022. 3. 5.

โ–ถ ํ•˜๋ฃจ 

=>  ๊ณต๋ถ€ ๊ด€๋ จ

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. ๋ชจ๋ธ์˜ ์ฑ…์ž„ ๋ถ„๋ฆฌ

> ์‚ฌ์šฉ์ž, ์ปดํ“จํ„ฐ, ์นด์šดํŠธ, ๊ฒŒ์ž„ ๋ชจ๋ธ์˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑ

ํ•˜์ง€๋งŒ ์•„์ง๋„ ๋ฉ€์—ˆ๋‹ค. Model ๋‹ค์šด Model์˜ ํŠน์ง•์€ ์•Œ๋งž์€ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋กœ์ง์€ Controller๋‚˜ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋กœ ๊ตฌํ˜„ํ•˜์ž
์•„์ง ์ˆ˜์ •ํ• ๊ฒŒ ๋งŽ์€ ์ฝ”๋“œ๋“ค. ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” enum์—์„œ ์ฑ…์ž„์€ ์ฑ…์ž„ ๋‹ต๊ฒŒ / ์• ๋งคํ•œ ์ฝ”๋“œ๋Š” ์ž‘์„ฑํ•˜์ง€ ๋ง๊ฒƒ /set๋ฉ”์„œ๋“œ ์—†์• ์„œ ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ‚ค๊ธฐ / static ํ‚ค์›Œ๋“œ ๋‚จ๋ฐœ ๊ธˆ์ง€ / enum ์ƒ์„ฑ์ž ์‚ฌ์šฉ ๊ธˆ์ง€ / Model์—์„œ view ์˜์กด ๊ธˆ์ง€


โ–ถ ๊ฐœ์ธ ๊ณต๋ถ€

2์žฅ ์ž๋ฐ”์™€ ์ ˆ์ฐจ์ ,๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์ž๋ฐ” ์‹คํ–‰ ๊ณผ์ •
    1. ์‚ฌ์šฉ์ž๊ฐ€ .java file์— ์†Œ์Šค์ฝ”๋“œ ์ž‘์„ฑ
    2. JDK(Java Development Kit)์•ˆ์— javac.exe ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•˜์—ฌ .java file(Object file)์„ ์ƒ์„ฑ
    3. JRE(Java Runtime Environment)์•ˆ์— java.exe ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ JVM์œ„์—์„œ ์‹คํ–‰
    4. JRE๋Š” ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— main() ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•จ, java.lang ํŒจํ‚ค์ง€๋ฅผ Static์˜์—ญ์— Load, Class๋ฅผ Static์˜์—ญ์— Load
    5. Stack์˜์—ญ์— main()๋ฉ”์†Œ๋“œ๋ฅผ ์ ์žฌ, main()๋ฉ”์†Œ๋“œ ์Šคํƒํ”„๋ ˆ์ž„ ์•ˆ์— ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜์ธ args์Šคํƒ์ƒ์„ฑ
  • ์ž๋ฐ” T๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
    1. Static : ํด๋ž˜์Šค ์˜์—ญ
    2. Stack : ๋ฉ”์†Œ๋“œ ์˜์—ญ
    3. Heap : ๊ฐ์ฒด ์˜์—ญ
  • ๋ฉ”์†Œ๋“œ ๋ธ”๋ž™๋ฐ•์Šคํ™” : parameter, return์— ์˜ํ•ด์„œ๋งŒ ๋ฉ”์†Œ๋“œ ์‚ฌ์ด์— ๊ฐ’์ด ์ „๋‹ฌ๋  ๋ฟ ์„œ๋กœ ๋‚ด๋ถ€์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(Multi Thread) : T๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ Stack์˜์—ญ์„ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋งŒํผ ๋ถ„ํ• ํ•ด์„œ ์“ฐ๋Š” ๊ฒƒ
    • Stack์˜์—ญ๋งŒ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๊ธฐ ๋–„๋ฌธ์— Static, Heap์˜์—ญ์„ ๊ณต์œ ํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€๋น„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉ
    • ์ „์—ญ๋ณ€์ˆ˜ ๋ฌธ์ œ์  : ์Šค๋ ˆ๋“œ A, ์Šค๋ ˆ๋“œ B๊ฐ€ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๊ฐ์ž setํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๊ฐ’์ด ๊ผฌ์ผ ์ˆ˜ ์žˆ์Œ
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค(Multi Process) : ๋‹ค์ˆ˜์˜ T๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž์˜ T๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ ๊ณ ์œ ์˜ ๊ณต๊ฐ„์ด๋ฏ€๋กœ ์„œ๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Œ
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์— ๋น„ํ•ด ๋†’์€ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅ, ํ•˜์ง€๋งŒ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ

3์žฅ ์ž๋ฐ”์™€ ๊ฐ์ฒด ์ง€ํ–ฅ

  • ํด๋ž˜์Šค : ๋ถ„๋ฅ˜์— ๋Œ€ํ•œ "๊ฐœ๋…"
  • ๊ฐ์ฒด : ์„ธ์ƒ์— ์กด์žฌํ•˜๋Š” ์œ ์ผ๋ฌด์ดํ•œ ์‚ฌ๋ฌผ
    • ํด๋ž˜์Šค๋Š” "๋ถ„๋ฅ˜"์˜ ์ด๋ฆ„์œผ๋กœ, ๊ฐ์ฒด๋Š” "์œ ์ผ๋ฌด์ดํ•œ ์‚ฌ๋ฌผ"์˜ ์ด๋ฆ„์œผ๋กœ ์ž‘๋ช…ํ•ด์•ผ ํ•จ
      1. ์กฐ๋ฅ˜์˜ ๋‚˜์ด๋Š”? ์กฐ๋ฅ˜์˜ ํฌ๊ธฐ๋Š”? --> ์กฐ๋ฅ˜๋Š” "๋ถ„๋ฅ˜"์˜ ๊ฐœ๋…์ด๊ธฐ ๋–„๋ฌธ์— ํ•ด๋‹น์งˆ์˜์— ๋‹ต์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํด๋ž˜์Šค์ด๋‹ค.
      2. bird์˜ ๋‚˜์ด๋Š”? bird์˜ ํฌ๊ธฐ๋Š”? --> ๊ฐ™์€ ์ด์œ ๋กœ ๋‹ต์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ "๋ถ„๋ฅ˜"", ํด๋ž˜์Šค์ด๋‹ค.
      ex) ํŽญ๊ท„ ๋ฝ€๋กœ๋กœ = new ํŽญ๊ท„(); < ์ธ์Šคํ„ด์Šค๋ช…์„ ์ž˜ ์ž‘์„ฑํ•œ ์˜ˆ์‹œ >
      1. ํŽญ๊ท„์˜ ๋‚˜์ด๋Š”? ํŽญ๊ท„์˜ ํฌ๊ธฐ๋Š”? --> ํŽญ๊ท„์€ "๋ถ„๋ฅ˜"์˜ ๊ฐœ๋…์ด๊ธฐ ๋–„๋ฌธ์— ํ•ด๋‹น์งˆ์˜์— ๋‹ต์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํด๋ž˜์Šค์ด๋‹ค.
      2. ๋ฝ€๋กœ๋กœ์˜ ๋‚˜์ด๋Š”? ๋ฝ€๋กœ๋กœ์˜ ํฌ๊ธฐ๋Š”? --> ๋ฝ€๋กœ๋กœ๋ผ๋Š” ์œ ์ผ๋ฌด์ดํ•œ ์‚ฌ๋ฌผ์˜ ํŠน์ง•์ด๋ฏ€๋กœ, ๋Œ€๋‹ต์ด ๊ฐ€๋Šฅํ•จ
    • ex) ์กฐ๋ฅ˜ bird = new ์กฐ๋ฅ˜(); < ์ธ์Šคํ„ด์Šค๋ช…์„ ์ž˜ ๋ชป ์ž‘์„ฑํ•œ ์˜ˆ์‹œ >

  • ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ํŠน์„ฑ
    • ์บก์Аํ™” : ์ ‘๊ทผ ์ œ์–ด์ž priate, [default], protected, public์„ ํ†ตํ•œ ์ ‘๊ทผ ์ œํ•œ
      1. private : ๋ณธ์ธ๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅ
      2. [default] : ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
      3. protected : ์ƒ์†/๊ฐ™์€ ํŒจํ‚ค์ง€๋‚ด์˜ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
      4. public : ๋ชจ๋‘๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ
      5. ์ƒ์†์„ ๋ฐ›์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ฐ์ฒด ๋งด๋ฒ„๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
      6. ์ •์  ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค๋ช….์ •์ ๋ฉค๋ฒ„ ํ˜•์‹์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จex) ๋น„๊ถŒ์žฅ ๊ฐ์ฒด๋ช….์ •์ ๋ฉค๋ฒ„) ์ด์›๊ธฐ.์ธ๊ตฌ
      7. ex) ๊ถŒ์žฅ ํด๋ž˜์Šค๋ช….์ •์ ๋ฉค๋ฒ„) ์‚ฌ๋žŒ.์ธ๊ตฌ
    • ์ƒ์† : ๋ถ€๋ชจ - ์ž์‹ ๊ด€๊ณ„๋ณด๋‹ค๋Š”, ๋™๋ฌผ - ํฌ์œ ๋ฅ˜์™€ ๊ฐ™์€ ๊ตฌ์ฒดํ™”, ๋ถ„๋ฅ˜๋„์™€ ๊ฐ™์ด ๋ถ€๋ชจ์˜ "ํ™•์žฅ"์˜ ๊ฐœ๋…
      1. ์ƒ์†์€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ํŠน์„ฑ์„ "์žฌ์‚ฌ์šฉ"ํ•˜๋Š” ๊ฒƒ
      2. ์ƒ์†์€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ํŠน์„ฑ์„ "ํ™•์žฅ"ํ•˜๋Š” ๊ฒƒ
      3. ์ƒ์†์€ is a kind of์˜ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•ด์•ผ ํ•จ
        • ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋‹ค. ( ex) ํฌ์œ ๋ฅ˜๋Š” ๋™๋ฌผ์ด๋‹ค. )
        • ์ž๋ฐ”๋Š” ์–ด์งธ์„œ ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๊ฐ€? : ๋‘๊ฐœ ์ด์ƒ์˜ ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ํŠน์ง• ์ค‘ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๊ณตํ†ต ํ–‰์œ„(๋ฉ”์†Œ๋“œ)๊ฐ€ ์กด์žฌํ•  ๋–„ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์–ด๋– ํ•œ ๊ฒƒ์„ ๋”ฐ๋ผ์•ผ ํ•˜๋Š”๊ฐ€? ํ•˜๋Š” ๋…ผ๋ฆฌ์  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ. ๋‹ค์ค‘ ์ƒ์†์œผ๋กœ ์ธํ•œ ๋“๋ณด๋‹ค ์‹ค์ด ํฌ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ Java์—์„œ๋Š” ๋‹ค์ค‘์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
      4. ์ธํ„ฐํŽ˜์ด์Šค ๋ž€?
        • Java๋Š” ๋‹ค์ค‘์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์ค‘์ƒ์†์˜ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ
        • ๊ตฌํ˜„ ํด๋ž˜์Šค is able to ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐœ๋… ( ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค "ํ•  ์ˆ˜ ์žˆ๋‹ค." )
        • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์˜ ์ด๋ฆ„์„ "์ •์˜"ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ, ์ž‘๋ช…์„ "~ํ•  ์ˆ˜ ์žˆ๋Š”"์œผ๋กœ ์ž‘๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
      5. ์ƒ์†๊ณผ T ๋ฉ”๋ชจ๋ฆฌ
        • ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋„ ํ•จ๊ป˜ ์ƒ์„ฑ๋œ๋‹ค.ex) Animal pingu = new Penguin();
        • ex) Penguin pororo = new Penguin();
    • ์ถ”์ƒํ™” : ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์„ ๋ถ„ํ•ดํ•ด์„œ ๊ด€์‹ฌ ์˜์—ญ(์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝ๊ณ„)์— ์žˆ๋Š” ํŠน์„ฑ๋งŒ ๊ฐ€์ง€๊ณ  ์žฌ์กฐํ•ฉ ํ•˜๋Š” ๊ฒƒ
      1. ๊ตฌ์ฒด์ ์ธ Class์—๋Š” ๊ต‰์žฅํžˆ ๋งŽ์€ ํŠน์ง•๊ณผ, ํ–‰์œ„๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, ๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ ์žํ•˜๋Š” ์˜์—ญ์—์„œ ๋ณด๋ฉด ํŠน์ง•, ํ–‰์œ„๊ฐ€ ๋งค์šฐ ์ œํ•œ์ ์œผ๋กœ ์„ค๊ณ„๊ฐ€๋Šฅํ•จ
      2. ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํŠน์ง•, ํ–‰์œ„๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ "๋ชจ๋ธ๋ง"์ด๋ผ๊ณ  ํ•จ
      3. ex) ์‚ฌ๋žŒ์ด๋ผ๋Š” ๊ตฌ์ฒด์  Class๋Š” ์‹œ๋ ฅ/๋ชธ๋ฌด๊ฒŒ/ํ˜ˆ์•กํ˜•/ํ‚ค/๋‚˜์ด/์ง์—…/๋จน๋Š”ํ–‰์œ„/์ผํ•˜๋Š”ํ–‰์œ„/์šด๋™ํ•˜๋Š”ํ–‰์œ„ ๋“ฑ ๋งค์šฐ ๋งŽ์€ ํŠน์ง•๊ณผ ํ–‰์œ„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, ๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ ์žํ•˜๋Š” "์€ํ–‰"์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ์‚ฌ๋žŒ์€ "๊ณ ๊ฐ"์œผ๋กœ ํ•œ์ •๋˜๋ฉฐ, ๋‚˜์ด/์ง์—…/์ผํ•˜๋Š”ํ–‰์œ„์ •๋„๋กœ๋งŒ ํŠน์ง•๊ณผ ํ–‰์œ„๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
      4. ์ถ”์ƒํ™”์™€ T๋ฉ”๋ชจ๋ฆฌ
      5. ex) Mouse๋Š” ์ด๋ฆ„/๋‚˜์ด/์‹ ์žฅ/์ฒด์ค‘/์ข…/๊ผฌ๋ฆฌ๊ฐฏ์ˆ˜/๋จน๋Š”ํ–‰์œ„/์ž๋Š”ํ–‰์œ„/๋ฌด๋Š”ํ–‰์œ„/๋‹ฌ๋ฆฌ๋Š”ํ–‰์œ„ ๋“ฑ ๋งŽ์€ ํŠน์ง•/ํ–‰์œ„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ• ๋ ค๋Š” ๋ชฉ์ ์˜ ํŠน์ง•์€ ์ด๋ฆ„/๋‚˜์ด/๊ผฌ๋ฆฌ๊ฐฏ์ˆ˜/๋…ธ๋ž˜๋ถ€๋ฅด๋Š”ํ–‰์œ„ ๋งŒ ํ•„์š”ํ•˜๋ฉด ์•„๋ž˜์™€๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋‹คํ˜•์„ฑ : ์˜ค๋ฒ„๋ผ์ด๋”ฉ / ์˜ค๋ฒ„๋กœ๋”ฉ
      1. ์˜ค๋ฒ„๋ผ์ด๋”ฉ(OverRiding) : ๊ฐ™์€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„/๊ฐ™์€ ์ธ์ž ๋ชฉ๋ก/์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ "์žฌ์ •์˜"
      2. ์˜ค๋ฒ„๋กœ๋”ฉ(OverLoading) : ๊ฐ™์€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„/๋‹ค๋ฅธ ์ธ์ž๋ชฉ๋ก/๋‹ค์ˆ˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ "์ค‘๋ณต ์ •์˜"
      3. ๋‹คํ˜•์„ฑ๊ณผ T๋ฉ”๋ชจ๋ฆฌex) Animal pingu = new Penguin();
      4. ex) Penguin pororo = new Penguin();

  • ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…
    • ํด๋ž˜์Šค ๋งด๋ฒ„ = ์ •์  ๋งด๋ฒ„ = ์Šคํƒœํ‹ฑ ๋ฉค๋ฒ„
    • ๊ฐ์ฒด ๋ฉค๋ฒ„ = ์˜ค๋ธŒ์ ํŠธ ๋ฉค๋ฒ„ = ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„
    • ํ•„๋“œ = ์†์„ฑ = ํ”„๋กœํผํ‹ฐ
    • ํ•จ์ˆ˜ = ๋ฉ”์„œ๋“œ
    • ๋ณ€์ˆ˜ ๊ณต๊ฐ„ = ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

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๋ถˆ๋ก์ด ์‹คํ–‰๋จ
      • ํด๋ž˜์Šค๊ฐ€ ์ œ์ผ ์ฒ˜์Œ ์‚ฌ์šฉ๋  ๋–„๋Š” ๋‹ค์Œ ์„ธ๊ฐ€์ง€์ค‘ ํ•˜๋‚˜์ž„
        1. ํด๋ž˜์Šค์˜ ์ •์  ์†์„ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ
        2. ํด๋ž˜์Šค์˜ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ
        3. ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ตœ์ดˆ๋กœ ๋งŒ๋“ค ๋•Œ
    • 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๊ธ‰ ๊ฐ์ฒด๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์ฐธ์กฐ ํˆฌ๋ช…์„ฑ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ž€?๋ถ€์ˆ˜ํšจ๊ณผ๋ž€
    1. ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ
    2. ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ œ์ž๋ฆฌ์—์„œ ์ˆ˜์ •ํ•จ
    3. ๊ฐ์ฒด์˜ ํ•„๋“œ๊ฐ’์„ ์„ค์ •
    4. ์˜ˆ์™ธ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‹คํ–‰ ์ค‘๋‹จ
    5. ์ฝ˜์†” ๋˜๋Š” ํŒŒ์ผ I/O๊ฐ€ ๋ฐœ์ƒํ•จ
    ⇒ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜
  • ⇒ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ œ๊ฑฐํ•œ ํ•จ์ˆ˜
  • ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€?

⇒ ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ˆ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค

⇒ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ

⇒ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

⇒ ํ• ๋‹น์— ์‚ฌ์šฉ๋œ ์ด๋ฆ„๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณ ์œ ํ•œ ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค

์ฐธ์กฐ ํˆฌ๋ช…์„ฑ์ด๋ž€

  1. ๋™์ผํ•œ ์ธ์ž์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
  2. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ์œ ์ง€๋œ๋‹ค

⇒ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰๊ฐ์ฒด!

 

 

2. ์ž๋ฐ”์—์„œ๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ?

  • Functional Interface

⇒ 1๊ฐœ์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค

⇒ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ž๋ฐ”์˜ ๋žŒ๋‹ค์‹์€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์ ‘๊ทผ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ

  • Runnable
  • Supplier
  • Consumer
  • Function<T, R>
  • Predicate

3. ๋žŒ๋‹ค๋ž€?

⇒ ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ๋‹จ์ˆœํ™”ํ•œ ๊ฒƒ ์ด๋ฆ„์ด ์—†๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฆฌ์ŠคํŠธ, ๋ฐ”๋””, ๋ฐ˜ํ™˜ ํ˜•์‹, ๋ฐœ์ƒ ๊ฐ€๋Šฅ ์˜ˆ์™ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง

  • ๋žŒ๋‹ค์˜ ์žฅ๋‹จ์ 
    • ๋žŒ๋‹ค๋Š” ํ•จ์ˆ˜, ๋ฉ”์„œ๋“œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋กœ ์ €์žฅ ๊ฐ€๋Šฅ
    • ๊ฐ„๊ฒฐ์„ฑ → ์ต๋ช…ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์Œ
    • ๋‹ค์ค‘ CPU๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌํ•จ
    • ๋ถˆํ•„์š”ํ•œ ๋ฃจํ”„๋ฌธ์˜ ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ•จ์ˆ˜์˜ ์žฌํ™œ์šฉ์ด ์šฉ์ดํ•จ
    • ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๊ฐ€ ๋ช…ํ™•ํ•ด์ ธ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ
    ๋‹จ์ 
    • ๋‹จ์ˆœํžˆ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ˆœํšŒ ์‹œ ๋žŒ๋‹ค์‹์ด ์ข€ ๋” ๋А๋ฆด ์ˆ˜ ์žˆ์Œ
    • ๋””๋ฒ„๊น… ์‹œ ํ•จ์ˆ˜ ์ฝœ ์Šคํƒ ์ถ”์ ์ด ๋‹ค์†Œ ์–ด๋ ค์›€
    • ์ง€๋‚˜์น˜๊ฒŒ ๋‚จ๋ฐœ ์‹œ ์ฝ”๋“œ๊ฐ€ ์–ด๋ ต๊ณ  ์ง€์ €๋ถ„ํ•ด์ง
    • ๋ฌด๋ช…ํ•จ์ˆ˜๋Š” ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ
  • ์žฅ์ 

4. ์ŠคํŠธ๋ฆผ์ด๋ž€?

  • ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ, ํŒจํ‚น, ๋น„ํŠธ ๋“ฑ์˜ ์ผ๋ จ์˜ ์—ฐ์†์„ฑ์„ ๊ฐ–๋Š” ํ๋ฆ„์„ ์˜๋ฏธ

5. ์ง๋ ฌํ™”๋ž€?

  • ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ, ๊ฐ์ฒด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆผ์— ์“ฐ๊ธฐ ์œ„ํ•ด ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
  • ์ฃผ๋œ ๋ชฉ์  : ๊ฐ์ฒด๋ฅผ ์ƒํƒœ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

 

6. OSI 7๊ณ„์ธต

  • TCP์™€ UDP๋Š” ์–ด๋”” ๊ณ„์ธต?
    • Http ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ค๊ฑธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‚˜?
      • ๋ฒ„์ „๋ณ„ ์ฐจ์ด
    • ⇒ 7๊ณ„์ธต, ๋น„์—ฐ๊ฒฐ์„ฑ ํ”„๋กœํ† ์ฝœ
  • ⇒ 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)๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
    Sprint Bean Configuration File(XML)
    • Spring Container๋Š” ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ
    • ⇒ Spring Container์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด : Spring Bean
    • ⇒ Spring Container๋Š” ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ (class.forname()์œผ๋กœ classLoader์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋™์  ๋กœ๋”ฉํ•˜์—ฌ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ์ƒ์„ฑ → ๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜๋ฆฌ)
    • ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ๊ธฐ์กด Spring bean์„ ์ œ๊ณต๋ฐ›์•„ ์˜์กด๊ด€๊ณ„ ์„ค์ • ๊ฐ€๋Šฅ (Property ์—˜๋ฆฌ๋จผํŠธ ์ด์šฉ)
    ApplicationContext ๊ฐ์ฒด(Spring Container)
    • Spring Container ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
    • Bean Configuration File(XML)์˜ bean ์—˜๋ฆฌ๋จผํŠธ์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ–๊ณ  ์žˆ๋‹ค
    • ⇒ Spring Bean Configuration File(XML)์„ ์ œ๊ณต๋ฐ›์•„ Spring Bean์„ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ
    • ⇒ ์Šคํ”„๋ง ๋นˆ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ๋„ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ž„
    DL (Dependency Lookup) : Spring Container ๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ Spring Bean์„ ์ œ๊ณต๋ฐ›๋Š” ๊ธฐ๋Šฅ
    • ApplicationContext.getBean(String beanName) : Spring Bean์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์‹๋ณ„์ž(beanName) ์„ ์ „๋‹ฌ๋ฐ›์•„ Spring Container๋กœ๋ถ€ํ„ฐ Spring Bean์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
    • ⇒ Object ํƒ€์ž…์œผ๋กœ Spring Bean์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๋ช…์‹œ์  ๊ฐ์ฒด ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ
    • ⇒ ์ „๋‹ฌ๋ฐ›์€ beanName์˜ Spring Bean์ด ์—†๋Š” ๊ฒฝ์šฐ NoSuchBeanDefinitionException ๋ฐœ์ƒ
    ClassPathXmlApplicationContext.close()
    • ApplicationContext ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์„œ๋“œ
    • ⇒ Spring Container๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  Spring Bean ์ œ๊ฑฐ
    BeanFactory
    • 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 ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณต
    scope ์†์„ฑ๊ฐ’์œผ๋กœ prototype์œผ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ
    • bean ์—˜๋ฆฌ๋จผํŠธ์— ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋กœ Spring Bean ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณต
    • ⇒ lazy-init ์†์„ฑ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ true๋กœ ์„ค์ •ํ•˜์—ฌ ์ œ๊ณต
  • scope ์†์„ฑ๊ฐ’์œผ๋กœ singleton์œผ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ

๋‹ค์Œ์ฃผ๋Š” DI (Dependency Injection)


โ–ถ ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ

> ๋™์ผํ•œ ์ปฌ๋Ÿผ๋“ค์„ ๊ฐ€์ง€๋Š” ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๊ธฐ

> ๊ตฌ์ฒดํ™”๋œ ์ปฌ๋Ÿผ ์ถ”๊ฐ€

> ์ถ”์ƒํ™”๋œ ์„ ํƒ์ง€๋“ค์€ ๋”ฐ๋กœ ํ…Œ์ด๋ธ”์„ ๊ด€๋ฆฌ

> git ์ดํด๋ฆฝ์Šค ํ˜‘์—… ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ ์ปค๋ฐ‹

ํ˜‘์—… ์™„๋ฃŒ / pull push branch ์ƒ์„ฑ ๋“ฑ๋“ฑ ๋ฐ ํ˜‘์—… ๊ธฐ์ค€ ๊ฐœ๋… ํƒ‘์žฌ ์™„๋ฃŒ

๋ฐ˜์‘ํ˜•

'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