传递参数

时间:2015-09-09 14:52:35

标签: java aspectj

我使用AspectJ来记录有关我的业务实体的信息。

我有一个名为Task的类,我正在拦截TaskLogger方面的任务的getter。

class Task {
    private String name;
    private Integer priority;
    ...

这很好用。我现在已经实现了一个Audit类来审计和控制任务。

我希望在调用Audit.audit(Object o)方法时对任务进行特定的日志记录。

Task t = new Task();
...
logger.info(t.getName());   // Here my aspect is being invoked for the name getter
...
auditor.audit(t.getName()); // Here I would like to have another aspect invoked for the task nam getter

实施例: 当调用logger.info()时,我希望我的LoggerAspect打印类似“Logging Task:taskName,at 15.30.32”的内容。这项工作正在完成,因为我的LoggerAspect拦截了getter。

但是当t.getName()被用作调用auditor.audit(t.getName())的参数时,我希望能够识别我为audit()方法调用getName() (或作为审计方法的参数)并提供不同的跟踪或不同的行为。

我想这可以通过定义2个不同的点切割来解决,但目前我找不到定义它的好方法。

(注意:我设法拦截审计(任务)。但也可以拦截审计(t.getName()) - 当这个参数是对Task类调用的结果时,我可以拦截一个参数吗? )

有什么想法吗?

由于

吉勒

0 个答案:

没有答案