0
클라이언트가 공통 인터페이스를 구현하는 자신의 bean을 클래스에 삽입 할 수 있지만 기본 bean을 사용하는 경우가 있습니다. 예를 들어 외부/타사 Bean으로 Autowired Spring Bean을 대체 할 수있는 방법
:public class TestClass {
// Clients can inject this, otherwise use a default...
@Autowired
private ConfigInjector configInjector;
}
내 정의 된 인터페이스와 기본 구현 : 사용
@Component
public class ExternalConfigInjector implements ConfigInjector {
public String getConfig() {
return "EXTERNAL CONFIG"
}
}
: 외부 클라이언트 내 ConfigInjector 인터페이스의 구현을 주입하고 싶어
public interface ConfigInjector {
String getConfig();
}
@Component
public class DefaultConfigInjector implements ConfigInjector {
public String getConfig() {
return "DEFAULT CONFIG"
}
}
@Autowired TestClass, 클라이언트가 TestClass를 사용하려고하면 자신의 ConfigInjector 구현 (ExternalConfigInjector)의 경우, 둘 이상의 ConfigInjector 구현이 존재하므로
NoUniqueBeanDefinitionException 예외가 발생합니다.
그렇다면 어떻게 자신의 ConfigInjector를 사용하여 내 기본 설정을 무시할 수있게 클라이언트와 TestClass를 공유 할 수 있습니까?
기본 주석이 적용되었습니다. 제 질문은 사실 [이 것]과 비슷합니다 (https://stackoverflow.com/questions/10534053/autowiring-two-beans-implementing-same-interface-how-to-set-default-bean-to-au? rq = 1) 또한 주 주석 사용을 제안합니다. 감사! – Kevin
환영합니다. 짧은 코스를 시청하는 것이 좋습니다. – nabeel