Реализация пользовательских аннотаций

0

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

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

@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(); }

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

  • 0
    Это зависит от того, какую платформу вы используете. Поддерживает ли он перехватчики или какую-либо другую форму АОП?
  • 0
    на самом деле меня попросили не использовать АОП
Показать ещё 7 комментариев
Теги:
spring
annotations
implementation

1 ответ

0

Чтобы создать свою собственную аннотацию, вы должны сначала создать интерфейс, который вы уже сделали, чем написать класс 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;
    }

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню