我正在考虑将所有Slf4j日志记录移动到Spring AOP中。 但是现在我对如何在以下场景中使用Spring AOP有一些疑问。 我可以看到我们可以使用它来打印常规方法跟踪日志和一些参数。 让我们说这样的情况。
public void methodTest(User object) {
Integer number = object.getValue();
List<Param> params = object.getParams();
if((number == null || number < 1000 || number > 10000)) {
LOGGER.error("Invalid Number- " + number);
//May not throw below exception. Just want to log and continue.
//throw new Exception(ErrorCode.INVALID_USER_NUMBER);
} else if (number == 10000) {
if(params != null && params.size() > 0) {
LOGGER.error("No params supported for number "+number);
throw new Exception(ErrorCode.INVALID_SCALE);
}
return;
}
if(number >= 1000 && number < 10000 && (params == null || params.size() == 0)) {
LOGGER.error("Not all params available");
throw new Exception(ErrorCode.INVALID_PARAM);
}
}
在这种情况下,我们如何调整Spring AOP?我有不同的日志语句和值来打印基于不同的逻辑。
更新:根据ErrorCode编写我们的日志语句我们在Aspect中收到的内容看起来不错? 如果我们在很少的场景中有相同的错误代码,那么日志语句可能会有所不同。是否有可能处理这个问题? 最后,如果我根据不同的条件使用调试语句,而不是错误方案,我们是否在Aspect中获得控件?
答案 0 :(得分:0)
创建一个Aspect类,在其中定义所有切入点和建议:
@Aspect
@Component
public class Foo {
@Pointcut("execution(* com.example.ClassName.methodName(..))")
private void exampleMethod() {}
@Before("exampleMethod()")
public void exampleAdvice() {
//your logging implementation
}
}
在这里您可以找到更多示例: https://javamondays.com/spring-aop-beginners-guide/