最適化のチェックにカスタム注釈インターフェイスパラメータ

  実際の開発、マルチステージのような複雑なサービスインターフェイスパラメータの多くは、様々なJSONまたはネストされた配列と混合される場合。

  組み立てロジック今回我々はコントローラー層で雑然とインターフェイスパラメータを記述する場合は、コードの可読性が非常に悪くなり、フォローアップパラメータのパラメータのパラメータを推定するよりも、フロントインターフェース文書アセンブリロジックを引き継ぐが必要です。

  この場合、インターフェースコールは、DTOが大幅に読みやすさを向上させることができるカスタム注釈と、カプセル化データ伝送をオブジェクトパラメータ。

  私たちは、DTOのパラメータを識別するためのコメントをカスタマイズします。

@Retention(RetentionPolicy.RUNTIME)
@Target(値 = ElementType.FIELD)
 パブリック @ インタフェースParamAnnotation {
     // 必要に応じてパラメータ
    パブリック ブール IsRequiredこの()デフォルト はfalse ; 

    // パラメータ名
    パブリック文字列名(); 
}

  メモ必要に応じて2つのプロパティパラメータ名とパラメータが含まれています。

  このように、我々のコードの構成は次のとおりです。

 

   への変更:

 

  私たちはグループの関連割り当てロジックは、コンストラクタのDTOにカプセル化されることができますが重要なのは、読みやすさを改善しました。

  我々は走査チェックDTOに反射によって完了できるかどうかを各呼び出しインタフェースは、パラメータを渡す必要があります前に:

 / ** 
     * @author NXY 
     * @date 2020年3月24日夜07時49分
     * @Param OBJ:パラメータオブジェクトを検証する必要
     * @return 
     * @exception 
     * @descriptionパラメータを記入する必要があるかどうかを判断する
     * / 
    パブリック ブール isCompleteは(T OBJ)スローIllegalAccessExceptionが、持たないNoSuchFieldExceptionを{ 
        クラスobjclass = obj.getClass()
        フィールド、フィールド[] = objClass.getDeclaredFields();
         (フィールド、フィールド:フィールド){
             IF(field.isAnnotationPresent(ParamAnnotationのクラス)) { 
                field.setAccessible(trueに)。
                ParamAnnotation ParamAnnotation = field.getAnnotation(ParamAnnotation。クラス);
                 // もし必要
                IF (paramAnnotation.isRequired()){ 
                    Object値 = Field.get(OBJ);
                     IFヌル == 値){ 
                        オブジェクトParaName = paramAnnotation .nameの();
                         // 不足している項目はライトバック 
                        フィールド、削除= objClass.getDeclaredField( "削除" ;)
                        (deletion.setAccessible trueにします)。
                        deletion.set(OBJ、paraName)。
                        リターン はfalse ; 
                    } 
                } 
            } 
        } 
        戻り 
    }

  だから、コードの行数十によって私達の外側の層のロジックになること:

 

   Voは、パラメータ、整合性チェックパラメータによって得られたDTO。ロジックコントローラのみが残りの断片的な変換に注意を呼び出し、モジュラーチェックしてみましょう。

  コードの読みやすさと引き換えに、これらのコストと低動作効率が、シーンの性能要件には特に高くはないが、反射しながら価値がそれです。

おすすめ

転載: www.cnblogs.com/niuyourou/p/12561939.html
おすすめ