java Spring AOP:在方法之间交换信息
假设我有一个名为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()
(在本例中,是a String
和a int
)的信息并将其传递到log()
中是非常有用的,因为这将允许我准确地将用户及其ID记录到我使用的任何日志存储中。我怎样才能做到这一点
# 1 楼答案
您可以通过注入
JoinPoint
实例并在其上调用getArgs()
方法来访问代理方法的参数。下面是一个示例片段