1

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()

            ....
        }

    }
}
4

5 に答える 5