[英]How exclude some paths from @GetMapping spring annotation?
我使用Spring Boot
并且我的主控制器处理所有顶级网址:
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping({"/*"})
public ResponseEntity<String> handleIndex() {
// ...
}
}
出于某些原因,我希望从处理我的控制器中排除路径/exclude_path
。
像这样的东西:
@GetMapping(include={"/*"}, exclude={"/exclude_path"})
你能回答我怎么做吗?
首先, /*
是一种不好的做法。 如果您真的想这样做,最好的选择是为您的控制器引入一个方面。 并在那里过滤掉它。
像这样的事情会做:
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void requestMapping() {}
@Pointcut("within(blah.blah.package.controller.*)")
public void myController() {}
@Around("requestMapping() && myController()")
public Object logAround(ProceedingJoinPoint joinPoint, RequestMapping requestMapping) throws Throwable {
String url = requestMapping.value();
// check the url and based on that do
// joinPoint.proceed();
}
您应该删除“/*”,因为它会删除所有请求。 只提供您想要的路径,这样您就不需要 /excludepath。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.