MapleStory Finger Point

๐ŸŸค JAVA/๐ŸŸค Spring

[Spring] Container ๊ณผ Bean

HYEJU01 2024. 8. 6. 20:49

 

๐Ÿ’ป Spring  Container (์ปจํ…Œ์ด๋„ˆ)

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์‹ฌ์ ์ธ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด๋“ค์„ ์ƒ์„ฑํ•˜๊ณ ,

๊ทธ๋“ค ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์„ค์ •ํ•˜๋ฉฐ,

๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

  • ์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection): ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด์˜ ์˜์กด์„ฑ์„ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์ด ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ: ์ปจํ…Œ์ด๋„ˆ๋Š” Bean์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์„ ์ค„์ด๊ณ , ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ’ป Spring  Bean (๋นˆ)

Spring Container์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Bean์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค

 

 

๐Ÿ’ป์Šค์ฝ”ํ”„ (Scope)

 

Bean์˜ ์Šค์ฝ”ํ”„๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ ์ฃผ๊ธฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์Šค์ฝ”ํ”„์—๋Š” ์‹ฑ๊ธ€ํ†ค(Singleton), ํ”„๋กœํ† ํƒ€์ž…(Prototype), ์š”์ฒญ(Request), ์„ธ์…˜(Session) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ’ป Bean ์˜ ๋ฒ”์œ„ (Scope)

1) ์‹ฑ๊ธ€ํ†ค Singleton ๋ฒ”์œ„

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋™์ผํ•œํƒ€์ž…์˜ ๋นˆ ๊ฐ์ฒด๋Š” ํ•œ๊ฐœ๋งŒ ์ƒ์„ฑ๋จ.

getBean() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋จ

 

 

2) ํ”„๋กœํ† ํƒ€์ž… Prototype ๋ฒ”์œ„

๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ„๋„๋กœ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค.

์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์—์„œ Bean ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ๋•Œ,

Scope์†์„ฑ์„ ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋จ.

<bean id="good" class="day01.SpringTest" scope="prototype"/>