首页 > 解决方案 > 学习 Java - 如何根据类型选择不同的服务 bean?

问题描述

我有一个接口和一个类:

public interface FileProcessingService {
   String NAME = "fileProcessingService";

   void processFile(FileDescriptor fileDescriptor);
}

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

我想要做的是让它根据文件描述符中的内容处理不同的文件类型。
可以为每种文件类型使用不同的服务 bean。例如说我有以下文件类型:

Customer.txt
Supplier.txt

每个都有不同的服务 bean?

如下:

@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 处理它...

或者这不是解决这个问题的正确方法吗?就像我如何让它选择合适的bean,例如带有注释等......?我想这是对服务的降级 - 这可能吗?

标签: javaspringservicespring-bean

解决方案


推荐阅读