Может быть, заголовок «может аннотация получить объект контекста?» неверно, но я не знаю, как дать ему правильный и понятный.может аннотация получить объект контекста?
Я использую Spring AOP + Java аннотаций, чтобы сохранить журнал, вот мой код:
CategoryAction.java:
@ServiceTracker(methodDesp="save category, category name:"+this.category.getName())
public String save() throws Exception
{
this.categoryService.save(this.category);
this.setJsonDataSimply(null);
return "save";
}
TrackAdvice.java:
public Object trackAround(ProceedingJoinPoint point) throws Throwable
{
String log = "success";
ServiceTracker tracker = null;
Method method = null;
AbstractAction action = null;
try
{
Object result = point.proceed();
action = (AbstractAction) point.getTarget();
MethodSignature signature = (MethodSignature) point.getSignature();
method = signature.getMethod();
tracker = method.getAnnotation(ServiceTracker.class);
return result;
}
catch (Exception e)
{
log = e.getMessage();
throw e;
}
finally
{
if (tracker != null)
{
String userId = (String) ActionContext.getContext().getSession().get(Constant.USERID);
if (userId == null)
{
userId = "unknown";
}
TrackLog t = new TrackLog();
t.setWhen(new Date());
t.setUserId(userId);
t.setResult(log);
t.setMethodName(action.getClass().getCanonicalName() + "." + method.getName());
t.setMethodDesp(tracker.methodDesp());
this.trackService.save(t);
}
}
}
ServiceTracker
мой собственный аннотация, в моем классе TrackAdvice
, я получаю текущий исполняемый метод, если у метода есть аннотация ServiceTracker
, а затем сохраните methodDesp
в аннотации к базе данных.
Теперь вопрос methodDesp
в аннотации динамический, я хочу получить объект this
и получить его category
.
Кажется, что Java Annotation не поддерживает это, возможно, поддерживает, но я не знаю, как это сделать.
спасибо большое. Выражение выглядит так: 'methodDesp =" 'категория сохранения, название категории:'. Concat (category.name) "', я только что протестировал. – hiway