Я добавляю несколько журналов к моему приложению на основе Spring, я хочу регистрироваться для каждого метода, пользователя, который выполняет действие. Ниже вы можете найти пример метода.Создание пользовательской аннотации в Java
@Override
@Transactional
public void deleteAccount(Long id){
String principal = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
MDC.put("username",principal);
accountDao.remove(id);
List<String> action = (List<String>) MDC.get("action");
if (action == null)
action=new ArrayList<String>();
action.add("Deleted account with id:"+id);
MDC.put("action", action);
}
Первые две строки метода являются универсальными, поэтому я хочу два избежать, чтобы добавить эти две строки в каждом методе:
String principal = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
MDC.put("username",principal);
Так я думал, чтобы создать пользовательский аннотацию, чтобы получить пользователя и поместить его в журнал MDC. Таким образом, я мог бы просто применить эту аннотацию к методам, в которых мне нужен этот журнал, я не уверен, как это сделать, не могли бы вы мне помочь?
Благодаря
Я бы сказал, что вместо аннотации я использую Aspect для реализации вашей логики. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.htm должно помочь асинхронно запускать ваши глобальные строки кода. – Jango