@Component vs @Configuration

@Bean @Configuration

  • ์ˆ˜๋™์œผ๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ œ์–ด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•  ๋•Œ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์‚ฌ์šฉ

  • ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฒ”์œ„์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋‚˜ ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ฒด๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋ก ํ•  ๋•Œ ์‚ฌ์šฉ

  • 1๊ฐœ ์ด์ƒ์˜ @Bean์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ @Configuration์„ ๋ช…์‹œํ•ด ์ฃผ์–ด์•ผ ์‹ฑ๊ธ€ํ†ค์ด ๋ณด์žฅ๋จ

@Component

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

  • ์Šคํ”„๋ง์˜ ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๊ธฐ๋Šฅ์ด @Component ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์•„์„œ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•จ

  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ @Component๋ฅผ ์ด์šฉํ•œ ์ž๋™ ๋“ฑ๋ก ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

  • @Component ํ•˜์œ„ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ @Configuration, @Controller, @Service, @Repository ๋“ฑ์ด ์žˆ์Œ

@Configuration ์•ˆ์— @Bean์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

  • @Configuration๊ฐ€ ์„ ์–ธ๋œ ํด๋ž˜์Šค ์•ˆ์˜ Bean์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

  • ์ฆ‰ CGLib์œผ๋กœ ํ”„๋ก์‹œ ํŒจํ„ด์„ ์ ์šฉ๋˜๋ฉฐ ์‹ฑ๊ธ€ํ†ค์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

// @Configuration์ด ์žˆ๋‹ค๋ฉด 
Test.sample.AppConfig$$EnhancerBySpringCGLIB$$780402cc@6179e425

// @Configuration์ด ์—†๋‹ค๋ฉด 
Test.sample.AppConfig@2796aeae

Last updated