public interface Food {
void eat();
}
위 인터페이스를
@Component
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("치킨을 먹습니다.");
}
}
@Component
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("피자를 먹습니다.");
}
}
두 클래스에 implement 시켜주었다.
@SpringBootTest
public class BeanTest {
@Autowired
Food food;
@Test
@DisplayName("test")
void test1(){
food.eat();
}
}
@SpringBootTest
public class BeanTest {
@Autowired
Food pizza;
@Autowired
Food chicken;
@Test
@DisplayName("test")
void test1(){
pizza.eat();
}
}
전 게시글에서 설명했듯, Class명의 소문자로 바꾼 변수 명으로, bean이 저장된다.
그 빈을 호출한것..
@Component
@Primary
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("치킨을 먹습니다.");
}
}
primary 어노테이션을 선언해줄 경우,chicken이 우선적으로 사용된다.
@Component
@Qualifier("pizza")
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("피자를 먹습니다.");
}
}
@Autowired
@Qualifier("pizza")
Food food;
qualifier로 명시할떄도 가능하다.