๐Ÿค” Bean ์ด๋ž€?

๊น€์„ฑ๊ธธยท2023๋…„ 3์›” 29์ผ
1

๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„

๋ชฉ๋ก ๋ณด๊ธฐ
2/7

Bean์ด๋ž€ IoC ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•ต์‹ฌ์„ ์ด๋ฃจ๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. IoC ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค๋Š” ์ ์„ ๋นผ๋ฉด ๊ทธ๋ƒฅ ์ˆœ์ˆ˜ ์ž๋ฐ” ๊ฐ์ฒด์™€ ๋‹ค๋ฆ„ ์—†๋‹ค. Bean์€ ๋””ํดํŠธ๋กœ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

Singleton(์‹ฑ๊ธ€ํ†ค)์ด๋ž€?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์˜์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๊ฒŒ ๋ณด์žฅํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

์œ„์— ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ memberService Bean์„ ์š”์ฒญํ–ˆ์„๋•Œ IoC(DI) ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿšจ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ์ฃผ์˜์  ๐Ÿšจ

  • ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ณต์œ ํ•˜๋Š”๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ํŠน์ • ํด๋ผ์ด์–ธํŠธ์— ์˜์กด์ ์ด๊ฑฐ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.
  • ๊ฐ€๊ธ‰์  ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•„๋“œ ๋Œ€์‹  ๊ณต์œ ๋˜์ง€ ์•Š์€ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, TreadLocal์„ ์‚ฌ์šฉํ•˜์ž.

Bean ๋“ฑ๋ก ๋ฐฉ๋ฒ•์€?

์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ง์ ‘ ํด๋ž˜์Šค์œ„์— @Compoenent ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ , stereotype์ธ @Service, @Controller, @Repository๋ฅผ ์‚ฌ์šฉํ•ด์„œ Bean์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. stereotype์ธ ์–ด๋…ธํ…Œ์ด์…˜๋“ค๋„ ๊นŒ๋ณด๋ฉด @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” @Configuration ์–ด๋…ธํ…Œ์ด์…˜๊ณผ @Bean ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. @Configuration ์–ด๋…ธํ…Œ์ด์…˜์€ ํ•ด๋‹น ํด๋ž˜์Šค์— Bean์ด ์žˆ์œผ๋‹ˆ scanํ•ด๋ผ! ๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. @Bean ์–ด๋…ธํ…Œ์ด์…˜์€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”๊ฒƒ์ด๋‹ค. @Bean์„ ์‚ฌ์šฉํ•ด ๋“ฑ๋ก ํ•  ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์œผ๋กœ Bean ์ด๋ฆ„์ด ๋œ๋‹ค.

Bean์„ ์–ด๋–ป๊ฒŒ ๋“ฑ๋กํ•˜๋Š”๋ฐ?

~Application์— ์žˆ๋Š” @ComponenteScan ์–ด๋…ธํ…Œ์ด์…˜ ๋•๋ถ„์— ~Application ํ•˜์œ„ ํŒจํ‚ค์ง€์— ์žˆ๋Š” Bean๋“ค์„ ์Šค์บ”ํ•ด IoC ์ปจํ…Œ์ด๋„ˆ์— Bean์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ~Application์ด ์†ํ•ด์žˆ๋Š” ํŒจํ‚ค์ง€ ๋ณด๋‹ค Bean ์Šค์บ” ๋Œ€์ƒ์ด ์ƒ์œ„ ํŒจํ‚ค์ง€์— ์žˆ๋‹ค๋ฉด ComponentScan์ด ๋˜์ง€ ์•Š๋Š”๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€