Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

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 如何从其他服务获取@GetMapping内的路径_Java_Spring_Spring Boot_Spring Mvc_Kotlin - Fatal编程技术网

Java 如何从其他服务获取@GetMapping内的路径

Java 如何从其他服务获取@GetMapping内的路径,java,spring,spring-boot,spring-mvc,kotlin,Java,Spring,Spring Boot,Spring Mvc,Kotlin,我有一个带有@GetMapping注释的rest控制器,用于将HTTP请求映射到特定的处理程序方法: @RestController class Handler(){ @GetMapping(path = ["method"]) fun handlerMethod(){ //... } } 我也有电子邮件服务,我需要发送一些链接到我的端点的电子邮件(在这种情况下) 这里我从配置()中获取基本url。有没有办法从Handler的@GetMapping fo

我有一个带有@GetMapping注释的rest控制器,用于将HTTP请求映射到特定的处理程序方法:

@RestController
class Handler(){
    @GetMapping(path = ["method"])
    fun handlerMethod(){
        //...
    }
}
我也有电子邮件服务,我需要发送一些链接到我的端点的电子邮件(在这种情况下)


这里我从配置()中获取基本url。有没有办法从Handler的@GetMapping for build链接获取EmailService中的路径属性到我的服务?

您可以从HttpServletRequest对象获取路径信息。请检查以下内容:

如果您没有获得确切的路径,请检查此项以了解获取路径的不同方法:

您可以通过
RequestContextHolder
将请求绑定到当前线程

((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest()


上面的代码将获取
HttpServletRequest
,然后您可以使用
[HttpServletRequest#getPathInfo()][1]
获取URL的
路径

Spring支持执行此任务。在控制器方法中,传递类型为
UriComponentsBuilder
的参数。此生成器将包含有关当前请求路由的所有信息(主机名、端口、路径等)。然后,您可以使用
MvcUriComponentsBuilder
让Spring构造您需要的链接(Java,但在Kotlin中应该是等效的):


也许这会有所帮助:
@Service
class EmailService(val config: Config){

    fun sendEmail(){
        // send "config.baseUrl/${getMethodPath()}"
    }

    fun getMethodPath(){
        //todo
    }
}
MvcUriComponentsBuilder.relativeTo(builderParameter)
    .fromMethod(Handler.class, "method")