Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Spring 将字符串从一个方面传递到连接点_Spring_Spring Boot_Spring Aop - Fatal编程技术网

Spring 将字符串从一个方面传递到连接点

Spring 将字符串从一个方面传递到连接点,spring,spring-boot,spring-aop,Spring,Spring Boot,Spring Aop,我有一个方面,它为所有控制器类中的每个方法执行。我的方面生成了一个UUID,我想在我的控制器中获得这个ID,以便将它传递给我的服务层和进一步的进程。我不确定如何将UUID从一个方面传递到控制器 以下是方面 @配置 @面貌 公共类应用程序方面{ @执行前*com.spike.aop.arun.*控制器。*。。 公共无效aspectForAllControllers{ 生成System.out.printlnCorrelation ID; var correlationId=generateCorr

我有一个方面,它为所有控制器类中的每个方法执行。我的方面生成了一个UUID,我想在我的控制器中获得这个ID,以便将它传递给我的服务层和进一步的进程。我不确定如何将UUID从一个方面传递到控制器

以下是方面

@配置 @面貌 公共类应用程序方面{ @执行前*com.spike.aop.arun.*控制器。*。。 公共无效aspectForAllControllers{ 生成System.out.printlnCorrelation ID; var correlationId=generateCorrelationId;//需要将其传递给控制器 } 私有字符串generateCorrelationId{ 返回UUID.randomuid.toString; } }
实现这一点的一种方法是使用RequestContextHolder并将生成的UUID设置为请求属性

下面的代码演示了相同的功能

@Before("execution(* com.spike.aop.arun.*Controller.*(..))")
public void aspectForAllControllers() {
    System.out.println("Correlation ID generated");
    String correlationId = generateCorrelationId(); 
    RequestContextHolder.getRequestAttributes().setAttribute("UUID", correlationId, RequestAttributes.SCOPE_REQUEST);

}
并访问控制器中的请求属性

@GetMapping("/testUUID")
public void testUUID(HttpServletRequest request) {
    System.out.println("From Controller :"+request.getAttribute("UUID"));
}


您是否可以创建header对象,将这个新的uuid值放入header中,并在Controller中作为正常值接收它这是一个spring boot APII,仅在spring boot的上下文中建议:facepalm:试试这个:@Aspectpercflowexecution*com.spike.aop.arun.*Controller.*.可爱。。这正是我想要的。。非常感谢你
RequestContextHolder.getRequestAttributes().getAttribute("UUID",RequestAttributes.SCOPE_REQUEST);