java - 学习 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,例如带有注释等......?我想这是对服务的降级 - 这可能吗?
解决方案
推荐阅读
- echarts - echarts - 根据y轴的visualMap
- mongodb - 带有 altlas $ne 的 Pymongo 不排除所有文档
- php - 警告:只有第一个字节将分配给字符串偏移量
- javascript - Mongoose 递减两个值之一
- machine-learning - Pytorch 模型不学习恒等函数?
- typescript - 在Vue中将scss变量导入打字稿
- oauth-2.0 - 尝试使用 Google 身份提供商登录 Openshift 4.5 时出现 401 Unauthorized
- r - vistime plotly 版和 highchart 版的区别
- java - Selenium 找不到正确的定位器 [JAVA]
- python - Numpy 已安装并一直在运行,但尽管在重新安装之前重新安装了 anaconda 并清除了 numpy,但我突然收到了缺少模块错误