我想创建一个将插入数据库的自定义注释(方法范围)。该注释将附加到我的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(); }
然后,在我的数据库中,我应该将动作及其作者重新插入
最佳答案
要创建自己的注释,您必须首先创建一个已经完成的接口,而不是必须为此编写一个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;
}
}