1 つのサービスの特定の impl を呼び出す必要がある入力を取得するサービスを作成しています。この入力は、呼び出す必要がある impl の名前のリストです。
public interface Processor {
Map<String, String> execute();
}
@Service("BUCKET_PROCESSOR")
public class BucketProcessor implements Processor {
..... //first impl
}
@Service("QUERY_PROCESSOR")
public class QueryProcessor implements Processor {
..... //second impl
}
@Service("SQL_PROCESSOR")
public class SQLProcessor implements Processor {
..... //third impl
}
次に、これらすべてのimplのマップを挿入して、入力を反復処理してそれぞれのimplを呼び出すことができるサービスがあります。
@Service
public class MyAysncClient {
@Autowired
private Map<String, Processor> processorMap;
public void execute(List<String> processors) {
List<Future> tasks = new ArrayList<>();
for (String p : processors) {
final Processor processor = this.processorMap.get(p);
processor.execute()
....
}
}
}