如何从@GetMapping spring注释中排除一些路径?

时间:2018-01-10 15:26:15

标签: java spring spring-mvc spring-boot

我使用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"})

你能否回答我怎么做?

2 个答案:

答案 0 :(得分:1)

首先,/*是一种不好的做法。如果您想要这样做,最好的选择是为您的控制器引入一个Aspect。并将其过滤掉 像这样的东西会做

    @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();

}

答案 1 :(得分:0)

除了所有请求之外,您应该删除“/ *”。只提供您想要的路径,这样您就不需要/ excludepath。