【发布时间】:2020-09-27 17:38:41
【问题描述】:
假设我有一个名为MyServlet 的类,其目的是响应用户请求:
@Component
public class MyServlet
{
public void accept(String clientName, int clientID)
{
System.out.println("Processing client:" + clientName + " with ID: " + clientID);
}
}
一般来说,在尝试调试我们的应用程序之前,我们可能希望记录用户的请求。所以如果我能在accept() 被调用之前透明地发生这种行为,我真的很高兴。对于这个人,Helper 类可以提供日志功能,我们将用@Before 装饰:
@Aspect
@Component
@EnableAspectJAutoProxy
public class Helper
{
@Before("execution(public void show())")
public void log()
{
System.out.println("Logging data...");
}
}
但如果能够获取提供给accept()(在本例中为String 和int)的信息并将其传递给log(),这对我来说非常有用,因为它将允许我将用户及其 ID 准确地记录到我使用的任何日志存储中。我怎样才能做到这一点?
【问题讨论】:
-
(1)
@EnableAspectJAutoProxy应该在单独的@Configuration类上,而不是在@Component上。 (2) 您的切面拦截了show(),但您的示例方法名为accept(String, int)。所以我对你想要达到的目标感到困惑。代码本身不会说话。所以请更新问题,然后在此处发表评论通知我们。
标签: java spring aop spring-aop cross-cutting-concerns