@RequiredArgsConstructors
のクラスがたくさんある私のプロジェクトではlombokを使用しています。私はこれらのコンストラクタをguiceで自動的に使用したいと思います。カスタム@Injectアノテーションを作成する
このオプションは、@RequiredArgsConstructors([email protected]__(@Inject))
を使用することをお勧めしますが、これは醜い実験的なものです(read:将来はロンボクから消える可能性があります)。
私が考えているのは、カスタム注入注釈を作成することです。たとえば、@InjectOnlyConstructor
と言うと、クラス定義を入れてguice's SPIを使用してこれらの型をバインドします。しかし、私はSPIでこれらのタイプを発見する方法を理解できません。
Guiceの要素を見て、guiceがデフォルトで拒否するこれらのコンストラクタにバインドするにはどうすればよいですか?
私はクラスが見えるようにしたいものの例:バックアップ計画として
@Singleton
@InjectOnlyConstructor
@RequiredArgsConstructor
public class CatPictureService {
private final WebServiceClient client;
// Cool stuff that would make facebook cry
}
が、私は私のプロジェクトのパッケージをスキャンし、自動的にそれらのタイプをバインドするモジュールを持つことができます。
トリックは[toConstructor()](http://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/binder/LinkedBindingBuilder.html#toConstructor-java)を使用することです。 .lang.reflect.Constructor-)バインディング。私は後でより完全な解決策を書くでしょう! –
@TavianBarnesはい!私はそれがバックエンドを完成させる方法だと思っていましたが、SPIを使用してバインドする必要があるタイプを発見するフロントエンドを見つけました(つまり、クラスパスをスキャンするのに不十分です)。 –
接線:コンストラクタ、依存性注入だけでなく、さまざまな他のユースケースに必要です。ロンボクのonX機能のステータスが「不確実」であることを考えると、私はGuiceだけでなく他の人たちにも役立つより包括的な例を探しています。何か解決策はありますか? –