2017-01-31 2 views
0

я пытаюсь реализовать пользовательский Java Аннотация: и написал следующее до сих пор:Java аннотаций и динамическая база данных контента

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

    boolean isValueRequired() default false; 
} 

Мое требование, если свойство/метод класса является isValueRequired = истина, то он должен получить отображаемое значение для этого свойства из базы данных:

Например, в моем db Приветствия похожи на 01 для MR и 02 для MRS и так далее.

И когда эта аннотацию включена я хочу значение свойства автоматически быть извлечена из БД:

Из других вопросов я получил намек, что мне нужно, чтобы разобрать аннотаций позже что-то вроде этого:

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) 
       } 

но я хочу указать, где именно мне нужно написать этот код для разбора аннотаций. Любая помощь будет высоко оценена.

Thanks

ответ

2

A подходящее место. Например, вы можете иметь фабрику, которая создает экземпляры и заполняет значения из базы данных. Тогда вам просто нужно быть осторожным, чтобы создать все экземпляры через фабрику (или вам не нужно, но тогда вы должны понимать, что аннотации также не будут обрабатываться).

+0

Это хорошая возможность, любая альтернатива? потому что гарантировать, что все экземпляры будут созданы с помощью фабрики, будет жестким. – Roxy

+0

Конечно. Буквально в любом месте, где выполняется код, и ваш объект можно манипулировать, и к базе данных можно получить доступ. – Kayaman

Смежные вопросы