@Autowired ์ฌ์ฉ ์ ์กฐํ๋ ๋น์ด 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ
@Autowired๋ฅผ ํตํ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊ฒฝ์ฐ์, ๋์ผํ ํ์ ์ ๋น์ด 2๊ฐ ์ด์์ด๋ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ ๋๊ฐ์ ๋น๋ค ์ค ์ด๋ ํ ๋น์ ์ฃผ์ ํด์ผ ํ ์ง ๊ฒฐ์ ํ์ง ๋ชปํด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ๋ฐ, ๊ฐ๋จํ๊ฒ๋ ๊ตฌ์ฒด ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๊ตฌ์ฒด ํด๋์ค์ ํด๋นํ๋ ํ๋๋ช (ํน์ ํ๋ผ๋ฏธํฐ๋ช )์ ์ฌ์ฉํจ์ผ๋ก์จ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ DIP๋ฅผ ์๋ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก @Qualifier์ @Primary์, ์ด๋ ธํ ์ด์ ์ ์ง์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ํ๋ํ๋ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
@Primary ์ฌ์ฉ
@Primary๋ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ์ฉ๋ฐฉ๋ฒ์ ๋๊ฒ ๊ฐ๋จํฉ๋๋ค.
@Componet
@Primary
public class RateDiscountPolicy implements DiscountPolicy {}
@Componet
public class FixDiscountPolicy implements DiscountPolicy {}
@Primary๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ?
NoUniqueBeanDefinitionException ๊ฐ ๋ฐ์ํฉ๋๋ค
@Qualifier
@Qualifier๋ ์ถ๊ฐ ๊ตฌ๋ถ์๋ฅผ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ค์ํ ๊ฒ์ ๋น์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๋ผ, ์ถ๊ฐ์ ์ธ ๊ตฌ๋ถ์๋ฅผ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค.
์์๋ฅผ ์ํด DiscountPolicy ํ์ ์ ๋น ๋๊ฐ๋ฅผ ๋ฑ๋กํ ํ ์ด๋ฅผ @Autowired๋ฅผ ํตํด ์ฃผ์ ๋ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
@Componet
@Qualifier("mainDiscountPolicy")
public class RateDiscountPolicy implements DiscountPolicy {}
@Componet
@Qualifier("fixDiscountPolicy")
public class FixDiscountPolicy implements DiscountPolicy {}
์ฃผ์ ์ @Qualifier๋ฅผ ๋ถ์ฌ์ฃผ๊ณ ๋ฑ๋กํ ์ด๋ฆ์ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
@Autowired
public OrderServiceImpl(@Qualifier("mainDiscountPolicy")DiscountPolicy discountPolicy){
this.discountPolicy = discountPolicy;
}
์ด๋ ธํ ์ด์ ์ง์ ๋ง๋ค๊ธฐ
@Qualifier๋ ์ปดํ์ผ ํ์ ์ ์ฒดํฌ๋์ง ์๋๋ค๋ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ ธํ ์ด์ ์ ์ง์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
https://ttl-blog.tistory.com/93?category=906283
@Primary์ @Qualifier๊ฐ ๋ชจ๋ ์๋ ๊ฒฝ์ฐ
@Qualifier๊ฐ ์ฐ์ ์์๊ฐ ๋ ๋์ต๋๋ค.
@Primary์ ์ง์ ๋ง๋ ์ด๋ ธํ ์ด์ ์ด ๋ชจ๋ ์๋ ๊ฒฝ์ฐ
@Qualifier์ ๋์ผํ๊ฒ ์ง์ ๋ง๋ ์ด๋ ธํ ์ด์ ์ด ๋ ๋์ต๋๋ค.
๐ Reference
'๐๏ธ Spring > ๊ธฐ๋ณธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๋น ์ค์ฝํ(Scope)์ ObjectProvider, proxyMode (0) | 2021.12.11 |
---|---|
[Spring] ๋น ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌํ๊ธฐ (@PostConstruct, @PreDestroy) (0) | 2021.12.11 |
[Spring] ํน์ ํ์ ์ ๋น์ ๋ชจ๋ ์กฐํํ๋ ๋ฐฉ๋ฒ (0) | 2021.12.11 |
[Spring] @Qualifier ๋์ ์ด๋ ธํ ์ด์ ์ ์ง์ ๋ง๋ค์ด๋ณด์ (0) | 2021.12.11 |
[Spring] @Autowired (0) | 2021.12.11 |