У меня есть интерфейс (X
) с методом, который печатает statement
и интерфейс имеют 2 реализаций него X1
и X2
и есть этот класс Y
, который имеет 2 объектов X
autowired по типу для X1
и X2
с интерфейсом. например, private X x;
и private X x2;
, и когда я вызываю x.statement()
, он печатает заявление профиля по умолчанию, но когда x2.statement()
называется, он все еще печатает инструкцию печати x.statement()
вместо x2.statement()
.
BTW Я использую весенний ботинок.Autowired не проводки фасоли по типу
public interface HelloWorldService {
public String getGreeting();
}
@Component
@Profile({ "default", "english" })
public class HelloWorldServiceEnglishImpl implements HelloWorldService {
@Override
public String getGreeting() {
return "Hello World";
}
}
@Component
@Profile("spanish")
public class HelloWorldServiceSpanishImpl implements HelloWorldService {
@Override
public String getGreeting() {
return "Hola Mundo";
}
}
-
@Controller
public class GreetingController {
@Autowired
private HelloWorldService helloWorldService;
@Autowired
private HelloWorldService helloWorldServiceSpanish;
public void setHelloWorldServiceSpanish(HelloWorldServiceSpanishImpl helloWorldServiceSpanish) {
this.helloWorldServiceSpanish = helloWorldServiceSpanish;
}
public void setHelloWorldService(HelloWorldService helloWorldService) {
this.helloWorldService = helloWorldService;
}
public String sayHello() {
String greeting = helloWorldService.getGreeting();
System.out.println(helloWorldServiceSpanish.getGreeting());
System.out.println(greeting);
return greeting;
}
}
Вы можете поместить свой код для X, X1 , и X2 здесь? – Todd
@Todd Я добавил код –
Где вы настраивали профиль? – developer