У меня есть несколько классов ниже. Очевидно, что если я вызову printMessage в классе CustomAtm, он выполнит метод в PrinterFile, потому что я объявил его с помощью @Qualifier. Но мне интересно, есть ли способ выполнить оба метода printMessage в PrinterConsole и PrinterFile, когда я вызываю его и не объявляю @Qualifier?
Интерфейс принтера
public interface Printer {
void printMessage(String message);
}
Класс PrinterConsole
import org.springframework.stereotype.Component;
@Component("printerConsole")
public class PrinterConsole implements Printer {
@Override
public void printMessage(String message) {
System.out.println(message);
}
}
Класс файла принтера
import org.springframework.stereotype.Component;
@Component("printerFile")
public class PrinterFile implements Printer {
Logger logger = LoggerFactory.getLogger(PrinterFile.class);
@Override
public void printMessage(String message) {
logger.info(message);
}
}
Класс CustomAtm
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@Component("customAtm")
public class CustomAtm {
@Autowired
@Qualifier("printerFile")
Printer printer;
public void printCurrentMoney() {
printer.printMessage("Current ATM money is... ");
}
}