我使用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类调用的结果时,我可以拦截一个参数吗? )
有什么想法吗?
由于
吉勒