ユーセフ:
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のを持つことができます。これらの各構成は、登録CloudUpload
Beanを。し、@ConditionalOnClass
AWS SDKは、クラスパス上にある場合は、すなわち現在有効な構成のみを実行、設定S3CloudUpload
Beanを、...
それは単にあなたが別の方法であなたのソフトウェアを設定し、配備/クラスパスを適応させることによってです。