【发布时间】:2015-05-20 15:55:44
【问题描述】:
我正在使用 Spring AOP 进行日志记录,其中我想记录包中所有方法的输入/输出。我已经为目标包编写了以下切入点。
@Pointcut("within(com.mypackage.model.*)")
public void allmethods(){};
我的记录方法如下。
@Before("allmethods()")
public void LoggingAdviceBefore(JoinPoint joinPoint)
{
StringBuffer logMessage = new StringBuffer();
if(joinPoint != null && joinPoint.getTarget()!=null && joinPoint.getTarget().getClass()!=null)
{
logMessage.append(joinPoint.getTarget().getClass().getName());
logMessage.append(".");
logMessage.append(joinPoint.getSignature().getName());
logMessage.append("(");
// append args
Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
logMessage.append(args[i]).append(",");
}
if (args.length > 0) {
logMessage.deleteCharAt(logMessage.length() - 1);
}
logMessage.append(")");
log.info(logMessage.toString());
}
}
代码运行良好。
我的问题是,即使我做了一些简单的操作,比如在我的代码中填充一个数组列表,即使这些信息也会被记录下来。我不希望记录此类信息。
我只想记录我在目标包中存在的类中编写的方法的输入,而不是在这些方法中编写的代码。我如何实现这一目标?
【问题讨论】:
-
AspectJ 文档中充满了更多限制性切入点规范的示例。你读过吗?
-
我进行了基本搜索,但没有得到我想要的。你能推荐一个好的网站来增加我的知识吗?
标签: spring spring-aop pointcut