์กฐํšŒ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ

2025. 3. 24. 18:16ยท๐Ÿ“ Spring/Lecture

์ธํ”„๋Ÿฐ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

 

@Autowired
private DiscountPolicy discountPolicy;

@Autowired๋Š” ํƒ€์ž…(Type)์œผ๋กœ ์กฐํšŒ

@Component
public class FixDiscountPolicy implements DiscountPolicy {}

@Component
public class RateDiscountPolicy implements DiscountPolicy {}

DiscountPolicy์˜ ํ•˜์œ„ ํƒ€์ž…์ธ FixDiscountPolicy, RateDiscountPolicy ๋‘˜ ๋‹ค ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์„ ์–ธ

ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉด ์„ ํƒ๋œ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ ๋ฌธ์ œ ๋ฐœ์ƒ → NoUniqueBeanDefinitionException ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 


@Autowired ํ•„๋“œ๋ช… ๋งค์นญ

@Autowired๋Š” ํƒ€์ž… ๋งค์นญ์„ ์‹œ๋„ํ•˜๊ณ , ์ด๋•Œ ์—ฌ๋Ÿฌ ๋นˆ์ด ์žˆ์œผ๋ฉด ํ•„๋“œ๋ช…, ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋นˆ ์ด๋ฆ„์„ ์ถ”๊ฐ€ ๋งค์นญ

@Component
public class OrderServiceImpl implements OrderService {
  private final MemberRepository memberRepository;
  private final DiscountPolicy discountPolicy;

  @Autowired
  public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
  }
}

์˜ค๋ฅ˜ ๋ฐœ์ƒ

@Component
public class OrderServiceImpl implements OrderService {
  private final MemberRepository memberRepository;
  private final DiscountPolicy discountPolicy;

  @Autowired
  public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy rateDiscountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = rateDiscountPolicy;
  }
}

DiscountPolicy discountPolicy → DiscountPolicy rateDiscountPolicy

 

 

 

@Qualifier → @Qualifier๋ผ๋ฆฌ ๋งค์นญ → ๋นˆ ์ด๋ฆ„ ๋งค์นญ

@Qualifier๋Š” ์ถ”๊ฐ€ ๊ตฌ๋ถ„์ž๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•

(์ฃผ์ž… ์‹œ ์ถ”๊ฐ€์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์ง€ ๋นˆ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜)

@Component
@Qualifier("fixDiscountPolicy")
public class FixDiscountPolicy implements DiscountPolicy {}

@Component
@Qualifier("mainDiscountPolicy")
public class RateDiscountPolicy implements DiscountPolicy {}
@Component
public class OrderServiceImpl implements OrderService {
  private final MemberRepository memberRepository;
  private final DiscountPolicy discountPolicy;

  @Autowired
  public OrderServiceImpl(MemberRepository memberRepository, @Qualifier("mainDiscountPolicy") DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
  }
}

 

 

 

@Primary ์‚ฌ์šฉ

์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

@Autowired ์‹œ์— ์—ฌ๋Ÿฌ ๋นˆ์ด ๋งค์นญ๋˜๋ฉด @Primary๊ฐ€ ์šฐ์„ ๊ถŒ์„ ๊ฐ€์ง„๋‹ค

@Component
public class FixDiscountPolicy implements DiscountPolicy {}

@Component
@Primary
public class RateDiscountPolicy implements DiscountPolicy {}
public class OrderServiceImpl implements OrderService {
  private final MemberRepository memberRepository;
  private final DiscountPolicy discountPolicy;

  // ์ƒ์„ฑ์ž ์ฃผ์ž…
  @Autowired
  public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
  }

  //์ˆ˜์ •์ž ์ฃผ์ž…
  @Autowired
  public DiscountPolicy setDiscountPolicy(DiscountPolicy discountPolicy) {
    this.discountPolicy = discountPolicy;
  }
}

 

 

 

์šฐ์„ ์ˆœ์œ„

@Primary๋Š” ๊ธฐ๋ณธ๊ฐ’ ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด๊ณ , @Qualifier๋Š” ๋งค์šฐ ์ƒ์„ธํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค

์Šคํ”„๋ง์€ ์ž๋™๋ณด๋‹ค๋Š” ์ˆ˜๋™์ด, ๋„’์€ ๋ฒ”์œ„์˜ ์„ ํƒ๊ถŒ ๋ณด๋‹ค๋Š” ์ข์€ ๋ฒ”์œ„์˜ ์„ ํƒ๊ถŒ์ด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค

๋”ฐ๋ผ์„œ @Qualifier๊ฐ€ ์šฐ์„ ๊ถŒ์ด ๋†’๋‹ค

๋ฐ˜์‘ํ˜•

'๐Ÿ“ Spring > Lecture' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์Šคํ”„๋ง์˜ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ์ง€์›  (2) 2025.03.24
Annotation ์ง์ ‘ ์ƒ์„ฑ  (0) 2025.03.24
์˜์กด๊ด€๊ณ„ ์ฃผ์ž…  (0) 2025.03.24
์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ  (0) 2025.03.23
์Šคํ”„๋ง ๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ  (0) 2025.03.23
'๐Ÿ“ Spring/Lecture' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์Šคํ”„๋ง์˜ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ์ง€์›
  • Annotation ์ง์ ‘ ์ƒ์„ฑ
  • ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…
  • ์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ
leee
leee
  • leee
    LEE
    leee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์นดํ…Œ๊ณ ๋ฆฌ
      • ๐Ÿ“ QA
        • Test
        • Lecture
      • ๐Ÿ“ SQL
        • ๐Ÿ“
      • ๐Ÿ“ Spring
        • Lecture
        • Error
      • ๐Ÿ“ Github
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๐Ÿ 
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    SQL_Join
    API Testing
    ํฌ์ŠคํŠธ๋งจ
    AppConfig
    MySQL
    COUNT(*)
    ๊นƒํ—ˆ๋ธŒ ์ธํ…”๋ฆฌ์ œ์ด ์—ฐ๋™ ํ•ด์ œ
    Postman
    API test
    API ์ž๋™ํ™” ํ…Œ์ŠคํŠธ
    api ํ…Œ์ŠคํŠธ
    ์Šคํ”„๋ง ๊ฐ์ฒด์ง€ํ–ฅ
    mysql_์—ฐ์‚ฐ์ž
    mysql_๊ธฐ๊ฐ„_๊ฒ€์ƒ‰
    mysql_join
    mismatch
    DI ์ปจํ…Œ์ด๋„ˆ
    shift_์—ฐ์‚ฐ์ž
    ์ƒ์„ฑ์ž์ฃผ์ž…
    mysql_๋ฐ์ดํ„ฐํƒ€์ž…๋ณ€ํ™˜
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
leee
์กฐํšŒ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”