같은 타입의 Bean이 두개라면?
@Primary를 붙인것은 기본으로 실행. (넓은 범위)
@Component
@Primary
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("치킨을 먹습니다.");
}
}
범위가 더 좁은것을 우선적으로 실행한다.
@Qualifier("pizza") 좁은 범위 설정
@Component
@Qualifier("pizza")
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("피자를 먹습니다.");
}
}
@SpringBootTest
public class BeenTest {
@Autowired
@Qualifier("pizza")
Food food;
@Test
@DisplayName("Primary 와 Qualifier 우선순위 확인")
void test1(){
food.eat();
}
}
실행결과
피자를 먹습니다.