实施自定义注释

时间:2019-02-06 10:58:50

标签: java mysql spring annotations implementation

我想创建一个将插入数据库的自定义注释(方法范围)。此注释将附加到我的rest控制器中的每个方法上,以便在进行api调用时,该注释将在数据库中的track-user表中保存的操作保存

到目前为止,我已经创建了注释界面,我认为我需要添加一种将action&author保存在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(); }

然后在我的数据库中,我应该将动作及其作者重新插入

1 个答案:

答案 0 :(得分:1)

要创建自己的注释,必须先创建一个已经完成的接口,而不是必须为此编写一个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;
    }

}