RIDフィールドと末尾のスペースを取得する方法をBeanUtils.copyProperties()

背景

午後の午後には、作者がバグを叩いて曲の幸せを聞いてヘッドフォンを着用している、彼はオフィスを口論の音を聞いて、IOSの開発と製品が問題のナンバープレートの番号を確認するために、戦いになった妹であることが判明しました。イオス原因が末尾の空白を除去するために、文字列のナンバープレートに伝達されず、後端直接BeanUtils.copyProperties(ソース、ターゲット)がデータベースに格納された値を受信し、スペースを直接表示ページ番号プレートは、試験は、妹を与えIOSのバグを入れて、それは簡単なことだ、口論二人は、妹せIOSは彼女に話をしない後の最終生成物ガスは、彼が言った爪タイピング上の問題があります。だから二人の男。

 

それを言うためにここでのように、実際には、開発者がバグにそれほど敏感である必要はありません、バグが、私たちは注意を払う必要があり、意味が、バグがあなたに対して世界では、我々は保留にしたいという心拍数、血液の沸騰を開始し始めたが表示されません良い態度は、あなたがそれをされていないと言う、多くの人が本当に言葉いくつかのバグが、不安とそれの怒りの状態で自分自身を置く理由にバグが、それは同僚との関係を弱体化する傾向にあるにもかかわらず、通信し、問題を解決するには?

 

身近に、我々は問題をどのように解決するために何を言っています。

 

まず、クライアント側のソリューション

1、脱線

私は、バックエンドが本当に入力されたフロントとバックエンド開発者が本当に問題に異議を唱える人、私は庭で玄関のドアを確認し、これはドアや庭のドアとの間の関係に似ていると思います確認する必要があり、特定のパラメータに、多くの場合は必要ありませんだと思います他の人はあなたが庭のドアバイパス壁の上に来たことを知っていても、家のドア、パティオドアロックは、避けるために、心理的な快適ですが、ロックはまた、より良い泥棒をswaggeringよりパティオドアが強く、直接それに来る開きました。大きく開いかかわらず、庭のドアをロックしていなかった、あなたがドアをロックする必要があり、バックエンドであるか、あるいはドアその後、泥棒があなたと一緒に丁寧ではないかもしれません。同様に、データベースに直接、他の人は、フロントエンドの検証バイパスにメソッドの百種類があり、要求をバックエンドをチェックしません。

 

2.ソリューション

参照するには、小さなパートナーのクライアントが存在するこの記事は、興奮していない場合は、特別な要件がない場合は、あなたがすべき始まると値の再送信の終了時に手動でトリムストリップスペースは、どのべき、あなたは元の値を渡すために必要であり、時間のバックエンドに文字列型の値を渡します前に、バーの終了後に年間で理解し、ささいなことは、多くの問題を軽減します。

 

第二に、バックエンドのソリューション(記事の焦点は)

1、脱線

多くの人々は、単に原始時代に戻り、)バックエンド、9012年、私たちが最初に手動トリ​​ム()を設定し、直接割り当て、(へBeanUtils.copyPropertiesのようなツール(ソース、ターゲット)を使用しているされていることを言うだろう。私はイエスと言う、それを考えるとなし、私たちのラインスタッフの開発のレベルは本当に不均一なレベルで、あなたは素晴らしい仕事、必要なすべての種類の出会いの問題に可能性のある毎日は、バックエンドのスタッフをロックするためのイニシアチブを取る必要がありますあなたも、ドアの庭をロックしていない可能性があるだけでなく、庭の所有者である、と可能性があるため、意識、最大オープンシックに出かけました。だから、ときに、この必要に応じて、我々はそれを行うのですかどのように、どのように除去され、その末尾のスペースをされた割り当ての時にソース文字列型でBeanUtils.copyProperties(ソース、ターゲット)を作るには?

 

2.ソリューション

ここで私は、割り当てによって、先頭と末尾のスペースを削除するにはあまり話をしなかった、コードで直接見に来た、手動でクライアントの文字列値を入力するためにリフレクションを使用して、ユーティリティクラスを書いたものです。

パッケージcom.mazhichu.util。

輸入lombok.Data;

インポートをjava.lang.reflect.Field;
輸入java.lang.reflect.Methodオブジェクト;

/ **
 * <Pクラス= "詳細">
 *機能:文字列型は、両方のスペースを削除するには
 * </ P>
 *
 * @author ムーア
 * @ClassNameビーン値トリムutilの。
 * @Version V1.0。
 * @date 2019年11月29日夜03時53分44秒
 * / 
パブリック クラスBeanValueTrimUtil {
      / **
      *豆の属性の文字列の前と後のすべてのスペースを削除
      * @paramの
      * @throws 例外
       * / 
     パブリック 静的な 無効 beanValueTrim(オブジェクトBean)がスロー例外を{
          場合(豆!= nullの){
              // 获取所有的字段包括パブリック、プライベート、保護された、プライベート 
             フィールド[]フィールド= bean.getClass()。 getDeclaredFields();
             以下のためにINT ; I <fields.length; iが0 = I ++ ){
                 項目f = 項目[I]。
                 もし(f.getType()のgetName()。等号( "java.lang.Stringで" )){
                     キー文字列 = f.getName(); // フィールド名の取得 
                     オブジェクトの値を= getFieldValue(豆、キー)。

                     もし(値== nullは継続;

                     setFieldValue(豆、キー、value.toString())(トリム);
                 }
             }
         }
     }

     / **
      豆のフィールドgetメソッドのフィールド名によって反射により取得した値*
      * @paramの
      * @param フィールド名
      * @return 
      * @throws 例外
       * / 
     プライベート 静的オブジェクトgetFieldValue(オブジェクト・ビーン、文字列フィールド名)を
              スロー{例外
         StringBufferの結果は = 新しいStringBufferの();
         文字列methodNameの = result.append( "GET" 
                 .append(fieldName.substring( 0、1 ).toUpperCase())
                 .append(fieldName.substring( 1 ))のtoString()。

         オブジェクトrObject = nullを
         方法メソッド = NULL ;

         @SuppressWarnings( "rawtypes" 
         クラス[] classArrは = 新しいクラスを[0 ];
         方法 = bean.getClass()getMethod(methodNameの、classArr)。
         rObject = method.invoke(豆、新しいオブジェクト[0 ])。

         返すrObjectを。
     }

     / **
      *値に呼び出すbean.setフィールドのセットを送信する方法を使用して
      * @paramの
      * @param フィールド名
      * @paramの
      * @throws 例外
       * / 
     プライベート 静的 ボイドsetFieldValue(オブジェクト・ビーン、文字列フィールド名、オブジェクトの値)が
              スロー{例外
         StringBufferの結果は = 新しいStringBufferの();
         文字列methodNameの = result.append( "セット" 
                 .append(fieldName.substring( 0、1 ).toUpperCase())
                 .append(fieldName.substring( 1 ))のtoString()。

         / **
          *値に呼び出すbean.setフィールドのセットを送信する方法を使用して
          * / 
         クラス[] classArr = 新しいクラス[1 ];
         classArr [ 0] = "java.lang.Stringで" .getClass()。
         方法メソッド = bean.getClass()getMethod(methodNameの、classArr)。
         method.invoke(豆、値)。
     }

     @データ
     パブリック 静的 クラスユーザー{
          プライベート文字列のユーザ名。
         プライベート文字列のパスワード。
         プライベート int型の年齢;
     }

    パブリック 静的 ボイドメイン(文字列[]引数)がスロー例外{
         ユーザのユーザ = 新しいユーザー();
         user.setUsername( "笑" );
         user.setPassword(「笑」)。
         user.setAge( 12 )。
         beanValueTrim(ユーザ)。
    }
 }

 

 結果のデバッグを見て

 

このように、それは文字列型の値の末尾のスペースを削除しないで、あなたBeanUtils.copyProperties(ソース、ターゲット)、問題ありません。個人的に私は、これは冗長運転であると思いますが、時には彼らは当然のことを人々が、あなたはこれをしなければなりません。

 

さて、この記事では、ビット無味であってもよいし、およそここで話をしたが、世界は毎日が助けすることができ、人々のこの問題に遭遇することを望んで、悲しいものの多くは、その後、あなたはまた、顔に持って起こるがあります。

 

条第同期公共:コードの先頭、あなたの注意を楽しみに、毎日見てJavaテクノロジの記事をプッシュ!

元は容易ではない、ソースを明記してください、ありがとうございました!

おすすめ

転載: www.cnblogs.com/mazhichu/p/11970609.html