Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringAOP:在方法之间交换信息_Java_Spring_Aop_Spring Aop_Cross Cutting Concerns - Fatal编程技术网

Java SpringAOP:在方法之间交换信息

Java SpringAOP:在方法之间交换信息,java,spring,aop,spring-aop,cross-cutting-concerns,Java,Spring,Aop,Spring Aop,Cross Cutting Concerns,假设我有一个名为MyServlet的类,其目的是响应用户请求: @组件 公共类MyServlet { public void accept(字符串clientName,int clientID) { System.out.println(“处理客户端:+clientName+”,ID:+clientID); } } 一般来说,在尝试调试应用程序之前,为用户的请求提供服务可能是我们想要记录的内容。因此,如果我能在调用accept()之前透明地执行此行为,我真的很想这样做。对于此人来说,助手类可以

假设我有一个名为
MyServlet
的类,其目的是响应用户请求:

@组件
公共类MyServlet
{
public void accept(字符串clientName,int clientID)
{
System.out.println(“处理客户端:+clientName+”,ID:+clientID);
}
}
一般来说,在尝试调试应用程序之前,为用户的请求提供服务可能是我们想要记录的内容。因此,如果我能在调用
accept()
之前透明地执行此行为,我真的很想这样做。对于此人来说,
助手
类可以提供日志功能,我们将在之前用
@对其进行修饰:

@方面
@组成部分
@促性腺激素
公营助理员
{
@之前(“执行(公共无效显示())”)
公开作废日志()
{
System.out.println(“记录数据…”);
}
}

但是,如果能够获得提供给
accept()
(在本例中,是
字符串和
int
)的信息并将其传递到
log()
,这将非常有用,因为这将允许我准确地将用户及其ID记录到我使用的任何日志存储中。如何实现这一点?

您可以通过注入
JoinPoint
实例并在其上调用
getArgs()
方法来访问代理方法的参数。下面是示例代码段

@Before("execution(* com.sample.SomeClass.doSometning(..))")
public void doSomethingBefore(JoinPoint joinPoint) {
   Object[] args = joinPoint.getArgs();
   for (Object arg: args) {
       // do whatever you like with the arguments
   }
}
(1)
@enableAspectProxy
应位于单独的
@配置
类上,而不是位于
@组件
上。(2) 您的方面截取了
show()
,但您的示例方法名为
accept(String,int)
。所以我对你想要达到的目标感到困惑。代码本身并不能说明问题。因此,请更新问题,然后在此处发表评论通知我们。