猿问

启动时决定的 URL 的 RequestMapping

我有一个案例,或者我想要一个特定的控制器来处理由另一个类中的字段决定的请求模式,它类似于来自资源属性的模式,但不是使用 ${propertyName} 而是方法的返回类型:


@Controller

public class SomeController {

    private final urlDecider;


    @RequestMapping(urlDecider.getPatterns())

    public String handle(HttpServletREquest request) {}

}

HandlerAdapter 似乎与我想要的类似,但问题是支持方法参数只有处理程序作为参数,而不是 url。


qq_笑_17
浏览 166回答 2
2回答

守着星空守着你

我有一个案例,或者我想要一个特定的控制器来处理由另一个类中的字段决定的请求模式,它类似于来自资源属性的模式,但不是使用 ${propertyName} 而是方法的返回类型:@Controllerpublic class SomeController {    private final urlDecider;    @RequestMapping(urlDecider.getPatterns())    public String handle(HttpServletREquest request) {}}HandlerAdapter 似乎与我想要的类似,但问题是支持方法参数只有处理程序作为参数,而不是 url。

汪汪一只猫

SpEL 可用于做到这一点。以下是在 Spring Boot 2 / Spring 5.0.9 上测试的。此示例调用同一 bean 上的方法以获取端点名称,但您可以将 SpEL 表达式中的 bean 和方法名称替换为适合您的应用程序的任何名称。@Slf4j@RestController("testBean")public class TestBean {  public String endpoint() {    return "/test";  }  @RequestMapping("#{testBean.endpoint()}")  public void doit() {    log.info("Hello World");  }}
随时随地看视频慕课网APP

相关分类

Java
我要回答