Study/Java

[TIL] Component Scan

hong- 2022. 6. 19. 11:05

๐Ÿ’ช๐Ÿป Component Scan : ์ปดํฌ๋„ŒํŠธ ์Šค์บ”

โ–ช๏ธ ํ•„ํ„ฐ

 โ–ธ includeFilters

   : ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋Œ€์ƒ์„ ์ถ”๊ฐ€๋กœ ์ง€์ •

 โ–ธ excludeFilters

   : ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์—์„œ ์ œ์™ธํ•  ๋Œ€์ƒ ์ง€์ •

 โ–ธ Filter Type ์˜ต์…˜

   โ‘  ANNOTATION : ์• ๋„ˆํ…Œ์ด์…˜์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ๋™์ž‘

   โ‘ก ASSIGNABLE_TYPE : ์ง€์ •ํ•œ ํƒ€์ž…๊ณผ ์ž์‹ ํƒ€์ž…์„ ์ธ์‹ํ•ด์„œ ๋™์ž‘

   โ‘ข ASPECTJ : AspectJ ํŒจํ„ด ์‚ฌ์šฉ

   โ‘ฃ REGEX : ์ •๊ทœํ‘œํ˜„์‹์„ ๋‚˜ํƒ€๋ƒ„

   โ‘ค CUSTOM : TypeFilter๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์ฒ˜๋ฆฌ


โ–ธ ApplicationContext

  - ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ

  - ๊ธฐ์กด์— AppConfig๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์˜์กด ์ฃผ์ž…ํ•˜๋˜ ๊ฒƒ์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์˜์กด์ฃผ์ž…

  - ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” @Configuration์ด ๋ถ™์€ AppConfig๋ฅผ ์„ค์ • ์ •๋ณด๋กœ ์‚ฌ์šฉ

  - @Bean์ด ์ ํžŒ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•ด์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก

 

๐Ÿ’ก ์ปดํฌ๋„ŒํŠธ ์Šค์บ” @Autowired ์žฅ์ 

  - ์Šคํ”„๋ง ๋นˆ์„ ์ž๋™์œผ๋กœ ์ฐพ์•„ ์ƒ์„ฑํ•ด์คŒ

  - ์ง์ ‘ @Bean์„ ํ†ตํ•ด ์„ค์ • ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์˜์กด ๊ด€๊ณ„ ๋ช…์‹œํ•˜๋˜ ๊ฒƒ์„ ํด๋ž˜์Šค ์•ˆ์—์„œ ํ•ด๊ฒฐ

โ–ธ @Configuration

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

โ–ธ @Autowired

  - @ComponentScan๊ณผ @Component๋งŒ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์— AppConfig์— ์–ด๋–ค ์˜์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ• ์ง€ ๋ช…์‹œํ•ด์ฃผ์ง€ X

     → @Autowired๋ฅผ ํ†ตํ•ด ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž