Реализация пользовательских аннотаций - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу создать пользовательскую аннотацию (метод с областью действия), которая будет вставлена ​​в базу данных.Эта аннотация будет прикреплена к каждому методу в моем контроллере rest, так что когда выполняется вызов API, аннотация сохраняет действие, выполненное в таблице track-user, в базе данных

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

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ActionLog {
    String action() default "UNDEFINED";
    String author() default "UNDEFINED";
}

Я хочу использовать его следующим образом:

@ActionLog(author="John",action="get all users")
public List<User> getAllUsers() { return repo.findAll(); }

Тогда в моей базе данных должна быть новая вставка действия с ее автором

1 Ответ

0 голосов
/ 06 февраля 2019

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

@Component
@Aspect
public class ActionLogAspect {


  @Around(value = "@annotation(ActionLog)", argNames = "ActionLog")
  public  getUsersByAuthorName(ProceedingJoinPoint joinPoint, ActionLog actionLog) throws Throwable {

    List<User> userList = new ArrayList();

     //Your Logic for getting user from db using Hibernate or Jpa goes here.
     //You can call your functions here to fetch action and author by using
    // actionLog.action() and actionLog.author()

    return userList;
    }

}
...