๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

์Šคํ”„๋ง ์ˆ™๋ จ 3์ฃผ์ฐจ : Bean

KIMHYEYUN 2023. 11. 9. 16:42
๋ฐ˜์‘ํ˜•

Bean ๋“ฑ๋ก

์ˆ˜๋™ ๋“ฑ๋ก ?

  • @Component ์‚ฌ์šฉ ์‹œ, @ComponentScan์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํ•ด๋‹น ํด๋ž˜์Šค Bean์œผ๋กœ ๋“ฑ๋ก
  • ๐Ÿ™‹โ€โ™€๏ธ ๊ทธ๋Ÿฐ๋ฐ ์™œ ์ˆ˜๋™์œผ๋กœ ๋“ฑ๋ก??
    • ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋‚˜ ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
      • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง Bean๋ณด๋‹ค ์ˆ˜๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋‹ด์Šค๋Ÿฝ์ง€ ์•Š์Œ
      • ์ˆ˜๋™ ๋“ฑ๋ก๋œ Bean์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์›€

์ˆ˜๋™ ๋“ฑ๋ก ๋ฐฉ๋ฒ•

@Configuration
public class PasswordConfig {
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
}
  • ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ @Bean
  • ๋ฉ”์„œ๋“œ๊ฐ€ ์†ํ•œ ํด๋ž˜์Šค @Configuration
  • Spring IoC ์ปจํ…Œ์ด๋„ˆ์— Bean์œผ๋กœ ์ €์žฅ๋จ

๋™์ผํ•œ ํƒ€์ž…์˜ Bean ์ค‘๋ณต ์กด์žฌ

EX) Food ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ chicken, pizza ํด๋ž˜์Šค ์กด์žฌ -> ๋‘˜๋‹ค ๋นˆ ๋“ฑ๋ก

@Autowire
Food food;

  • @Autowired๋กœ Bean ๊ฐ์ฒด ์ฃผ์ž… ์‹œ๋„
  • ์˜ค๋ฅ˜ ๋ฐœ์ƒ โ†’ "Food ํƒ€์ž…์˜ Bean์ด ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌ"

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ๋“ฑ๋ก๋œ Bean ์ด๋ฆ„ ๋ช…์‹œ
     @Autowired Food pizza;
     @Autowired Food chicken;
    -> @Autowired๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ Bean Type์œผ๋กœ DI๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ Bean Name์œผ๋กœ ์ฐพ์Œ
  2. @Primary ์‚ฌ์šฉ
     @Component
     @Primary
     public class Chicken implements Food {
         @Overrid
         public void eat(){
             System.out.println("eat chicken");
         }
     }
    -> ๊ฐ™์€ ํƒ€์ž…์˜ ๋นˆ ์ค‘์—์„œ @Primary๊ฐ€ ์„ค์ •๋œ Bean ๊ฐ์ฒด ์ฃผ์ž…
  3. @Qualifier ์‚ฌ์šฉ
     @Component
     @Qualifier("pizza")
     public class Pizza implements Food {
         @Overrid
         public void eat(){
             System.out.println("eat pizza");
         }
     }
    • pizza ํด๋ž˜์Šค์— @Qualifier("pizza") ์ถ”๊ฐ€
      @Autowired 
      @Qualifier("pizza")
      Food pizza;
    • @Qualifier๊ฐ€ ๋™์ผํ•œ ๋นˆ ์ฃผ์ž…

๋งŒ์•ฝ @Primary์™€ @Qualifier๊ฐ€ ๋™์‹œ ์ ์šฉ -> @Qualifier ์šฐ์„  ์ ์šฉ
๊ทธ๋Ÿฌ๋‚˜ @Qualifier๋Š” ์ฃผ์ž… ๋ฐ›๊ณ ์žํ•˜๋Š” ๊ณณ์— ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•จ

๋ฒ”์šฉ์ ์œผ๋กœ๋Š” Primary, ์ง€์—ฝ์ ์œผ๋กœ๋Š” Qualifier ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ถŒ์žฅ

728x90
๋ฐ˜์‘ํ˜•