すでにJavaプログラミングを使用しており、SpringやHibernateなどの一般的なフレームワークを使用している場合は、注釈の使用に精通している必要があります。既存のフレームワークを使用する場合、通常、注釈を使用するのに十分です。しかし、あなたは時々あなた自身の注釈を作成するためにあなた自身のニーズを作成する必要がありますか?
少し前に、さまざまなデータベースに保存されている一般的なデータを含むプロジェクトである注釈を作成する理由が見つかりました。
シーンの説明
ビジネスには、同じデータを保存するさまざまなデータベースがあります。これらすべてのデータを1つのメインデータベースに統合して、複数のデータソースを削減します問題。
ただし、プロジェクトが開始される前に、ビジネスはデータ距離を同期することができるかを知り、それらを同期させるために必要な修正を行う必要があります。 。
注釈
しばらくの間、いくつかのアイデアは、データの比較とレポート処理の構成を促進することにしましたこの方法では、ClassPathの特定の場所にあるファイルに構成が隠されていません。
最も簡単な場合、アノテーションは、コード実行自体の操作なしで情報を提供するために、マークにすぎませんおなじみですが、独自の注釈を作成する必要はありません。この目的には、メタデータの詳細情報を指定できる要素を含むJava Type @Interfaceを作成する必要があります。
このプロジェクトの例は次のとおりです。
@Target(ElementType.Field) @retentionPolicy.runtime)public @interface reconfield { /***値は、指定されたソースの値を比較するか、使用して値または参照を表示するために使用するかどうかを示しています。値を返します。 )デフォルトのrecondisformat.native。値は、火災のレポートに表示されるラベルを示します。 ;}
これは、駆動データが含まれる基本的な要素がどのように動作するかの主な注釈ですこれらの要素のほとんどは、コードリストに1つのメモで紹介されています。
@ターゲットのアノテーションでは、そのJava要素でアノテーションを使用する必要があります。
@retentionは、アノテーションが効果的であることを指定できます。
このデータ検証プロセスは、各データベースのクエリを実行し、特定のビジネスレコードタイプのすべてのフィールドを示すエンティティビーンにマッピングされますこれらの注釈が異なるデータ比較構成でどのように使用されるかを理解するためのいくつかの例。
既存の値を検証し、各データソースの正確な一致のみを一致させるためには、レポート上のフィールドIDとフィールドのマーキングを提供する必要があります。
@ReconField(ID = Customer_Id、label = "Customer ID")Private String CustomerID;
各データソースで見つかった値を表示するには、データの比較がない場合は、比較ソース要素を作成して値をfalseに設定する必要がある場合があります。
@Reconfield(id = name、label = "name"、comparesources = false)プライベート文字列名;
すべてではなく、指定されたデータソースに見られる値を検証するために、このものをすべて使用しますが、これに記載されているデータソースのみを比較できます方法では、すべてのデータソースに保存されていないデータシナリオは、比較に使用できるデータソースを含む列挙タイプです。
@Reconfield(ID = private_placement_flag、label = "private placement flag"、sourcestocompare = {reconsource.legacy、reconsource.pace} g priveplacementflag;
これで、基本的なニーズを満たしており、複雑なデータ比較機能のために指定されたフィールドを実装する問題を解決する必要があります。
@Target(ElementType.Field)@retention(RetentionPolicy.Runtime)Public @Interface ReconCustomRule { /***値は、カスタムルールプロセッサをATESTESTESTES ATEに使用するパラメーターを示します。 ]カスタム実行をインスタンス化するパラメーター[] Params()default {};カスタムルールプロセッサの。*/class <?
これは、最大の違いに非常に似ています。これは、@ReconCustomRuleの注釈で、この注釈で指定されたクラスをインスタンス化して初期化できることですユニバーサルルールインターフェイスを実装する必要があります。
それでは、この注釈を使用する例を見てみましょう。
この例では、証券取引所が米国であるかどうかを確認するカスタマイズされたルールを使用します。フィールド。
@Reconfield(ID = Street_Cusip、label = "Street Cusip"、Comparesources = false)@ReconCustomRule(processor = SkipNonUsexChangComparisonRule.class)String StreetCusip;
ここでは、カスタムルールのパラメーターを指定します。この特別なデータの比較は、1000から逸脱することはできません。同じカスタムルールを複数のフィールドに適用することは、注釈の性質のために静的であるため、動的に変更できないことです。
@ReconField(ID = USD_MKT_CAP、LABEL = "MACED CAP USD"、DISPLAYFORMAT = recondisPlayFormat.Numeric_Whole、sourcestocompare = {reconsource.legacy、reconsource.pace、reconsource.bob_prcm}) 10000 "})private bigdecimal usdmktcap;
ご覧のとおり、いくつかの単純な注釈のみを使用しており、この特別なケースでは、データ検証レポート機能をかなりの柔軟性を設計しています。したがって、実際に注釈を使用して、見つかったマッピングデータエンティティを計算し、処理に直接使用します。