@Conditionalに完全修飾クラス名

ユーセフ:

春ブーツと自動構成についてのコースのビデオで

ここでは、画像の説明を入力します。

それは我々が完全修飾クラス名を使用することができることを言うtype = { "a.b.c.Foo" }代わりにvalue = { Foo.class }、我々はコンパイル時にクラスオブジェクトに依存したくない場合。

あなたは私の何という手段を説明できますか?

DPR:

使用してtype = { "a.b.c.Foo" }何のクラスが存在しない場合でも、コンパイルされますa.b.c.Foo、あなたのクラスパス上にいる間、value = { a.b.c.Foo.class }必要がFooコンパイル時に少なくともあなたのクラスパス上にあります。両方の変形があっても実行することができ、注釈の性質上a.b.c.Foo、実行時にクラスパス上に存在しない-少なくともいくつかの状況下で:

ののJavaDoc @ConditionalOnClass.value

この注釈は、ロードクラスのバイトコードによって解析されるので、最終的に、この注釈は、影響を受けるコンポーネントとの上に直接ある場合にのみ、クラスパス上にないかもしれないことにクラスを指定するために安全でないこの注釈が構成される、メタアノテーションとして使用される場合。メタアノテーションとしてこのアノテーションを使用するために、唯一{@link #NAME}属性を使用します。

一般的には@ConditionalOnClass注釈が存在することを他のクラスに依存する設定を実行するために使用することができます。

たとえば、あなたは、異なるクラウドストレージ構成のAWS、GCPとAzureのを持つことができます。これらの各構成は、登録CloudUploadBeanを。し、@ConditionalOnClassAWS SDKは、クラスパス上にある場合は、すなわち現在有効な構成のみを実行、設定S3CloudUploadBeanを、...

それは単にあなたが別の方法であなたのソフトウェアを設定し、配備/クラスパスを適応させることによってです。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=400974&siteId=1