2017-01-31 8 views
0

私はカスタムアノテーションを実装しようとしています: をし、これまでに次のように書いた:Javaのカスタム注釈および動的なデータベースコンテンツ

@Target({ElementType.FIELD,ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MappedField{ 

    boolean isValueRequired() default false; 
} 

クラスのプロパティ/メソッドがisValueRequired =真であれば私の要件があります次に、このプロパティのマッピングされた値をデータベースから取得する必要があります。

たとえば、私のdbでは、敬礼はMRの場合は01、MRSの場合は02などです。

そして、この注釈は、私は、DBからフェッチするために自動的にプロパティ値をしたい有効になっている場合:

他の質問から、私は後でこのような何かを注釈を解析する必要があることをほのめかしました:

public static void performAnnotationScanOnClass(Class<?> clazz) { 
     Field[] fields = clazz.getDeclaredFields(); 

     for (Field field : fields) { 

      Annotation[] annotations = field.getAnnotations(); 
      for (Annotation annotation : annotations) { 

       if (annotation instanceof MappedField) { 
        MappedField mappedField= (MappedField) annotation; 

//      if (field.get(...) == null) 
//       field.set(... , value) 
       } 

私の要点は、注釈を解析するためにこのコードを書く必要があるところです。 ご協力いただければ幸いです。

ありがとう

答えて

2

適切な場所。たとえば、インスタンスを作成し、データベースから値を入力するファクトリを持つことができます。次に、ファクトリを介してすべてのインスタンスを作成するように注意する必要があります(またはそうする必要はありませんが、注釈も処理されないことに気がつく必要があります)。

+0

これは別の可能性がありますか?すべてのインスタンスが工場を通じて作成されることを保証するのは難しいだろうから – Roxy

+0

もちろん。文字通り、コードが実行され、オブジェクトが操作され、データベースにアクセスできる任意の場所。 – Kayaman

関連する問題