Изучение Java - как выбрать другой сервисный компонент в зависимости от типа?

У меня есть интерфейс и класс:

public interface FileProcessingService {
   String NAME = "fileProcessingService";

   void processFile(FileDescriptor fileDescriptor);
}

public class FileDescriptor(){
   protected File file;
   protected String type;
} 

И я хочу, чтобы он обрабатывал разные типы файлов на основе содержимого дескриптора файла.
Возможно ли иметь разные сервисные компоненты для каждого типа файлов. например скажем, у меня есть следующие типы файлов:

Customer.txt
Supplier.txt

У каждого есть отдельный сервисный компонент?

Как следует:

@Service(FileProcessingService.NAME)
public class FileProcessingServiceBean implements FileProcessingService {

   @Override
   public boolean processFile(FileDescriptorExt fileDescriptor) {
      return false;
   }
}

public class CustomerFileServiceBean extends FileProcessingServiceBean{
   @Override
   public boolean processFile(FileDescriptorExt fileDescriptor) {
      System.out.println("IN CUSTOMER PROCESSOR");
      return false;
   }
}

public class SupplierFileServiceBean extends FileProcessingServiceBean{
   @Override
   public boolean processFile(FileDescriptorExt fileDescriptor) {
      System.out.println("IN SUPPLIER PROCESSOR");
      return false;
   }
}

Так что я могу просто позвонить

Filedescriptor fd = new FileDescriptor();
fd.setType("Customer");
fd.setFile(Customer.txt);
fileProcessingService.processFile(fd);

И пусть он автоматически обрабатывает файл с помощью CustomerFileServiceBean. И если файл не является файлом клиента, обработайте его через супер FileProcessingServiceBean...

Или это не правильный подход к этому? Например, как мне заставить его выбрать подходящий компонент, например. с аннотацией или что-то в этом роде...? Я предполагаю, что это снижает класс обслуживания - возможно ли это?


person Daryn    schedule 15.06.2018    source источник
comment
Где вы использовали этот сервисный компонент?   -  person Gaurav Srivastav    schedule 15.06.2018
comment
Возможный дубликат Strategy в Spring boot   -  person JEY    schedule 15.06.2018
comment
@JEY Спасибо, JEY, твое предложение направило меня в правильном направлении. Знаете ли вы, можно ли установить реализацию по умолчанию, если критериям соответствует более 1 компонента? например Я хочу иметь возможность установить для него значение null и выбрать значение по умолчанию.   -  person Daryn    schedule 15.06.2018
comment
Здесь есть хороший простой пример: stackoverflow.com/questions/33993063/< /а>   -  person Daryn    schedule 15.06.2018
comment
Использовать аннотацию Первичный   -  person JEY    schedule 15.06.2018
comment
@JEY, спасибо, чувак! ... И еще один сценарий. Можно ли запрограммировать его на использование по умолчанию, если указанное имя компонента не существует? Таким образом, вместо того, чтобы выдавать ошибку, я мог бы заставить ее обработать ее по умолчанию, а затем, возможно, добавить дополнительный код, чтобы уведомить меня о том, что этот bean-компонент не существует?   -  person Daryn    schedule 15.06.2018
comment
не знаю, лучше всего использовать основной и проверять каждый раз, когда тип   -  person JEY    schedule 15.06.2018