У меня есть интерфейс и класс:
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...
Или это не правильный подход к этому? Например, как мне заставить его выбрать подходящий компонент, например. с аннотацией или что-то в этом роде...? Я предполагаю, что это снижает класс обслуживания - возможно ли это?