作成中のDIコンテナですが、折角分散トランザクションのAPIを取り込んだにもかかわらず複数データソースがある場合に、「どのクラスがどのデータソースを使うのか」、という点の解決が難しいです。
よくあるDIコンテナでは、DataSource ds = container.getInstance(DataSource.class);のような書き方で取得できると思いますが、複数データソースがあるときに困るわけです。そこで新しい概念として、「クライアントクラス」という概念を入れてみました。
DataSource ds = container.getInstance(DataSource.class, this.getClass());というような感じで、呼び出し元を一意に解決する為のヒントとして利用できます。これは文字列でも何でも構わないのですが、クラスは階層やパッケージなどの色々な情報を含んでいるので、クラスをキーにするのが一番コーディングしやすいです。何よりIDEでコード補完ができるのが一番大きいですね。