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 Mvc - Fatal编程技术网

Spring引导映射

Spring引导映射,spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,在下面的代码中,有两个用@GetMapping注释的方法,一个需要空路径,另一个需要路径变量 @Controller @RequestMapping("/") public class BasicController { @GetMapping() public String get(Model model) { // doing something } @GetMapping("/{variable}") public S

在下面的代码中,有两个用
@GetMapping
注释的方法,一个需要空路径,另一个需要路径变量

@Controller
@RequestMapping("/")
public class BasicController {

  @GetMapping()
  public String get(Model model) {
    // doing something
  }

  @GetMapping("/{variable}")
  public String getWithPathVar(@PathVariable("variable") String variable, Model model) {
    // doing something different
  }
}

问题:当应用程序运行时,我点击“www.myurl.com/”时,即使没有路径参数,它也会输入这两种方法。如何修复此问题?

如果是,则听起来像是一个bug或过滤器的一些错误配置。我无法在Spring上重现这种行为
5.2.7
。下面是一个例子,解释了引擎盖下弹簧的工作原理

如果无法升级Spring版本,则只能使用单个端点作为解决方案

@GetMapping("/{variable}")
public String getWithPathVar(@PathVariable("variable") String variable, Model model) {
  // doing something different
 if(variable != null) {
   // fulfill the normal workflow
 } else {
   // call ex get() workflow
  }
}

您是否尝试过从控制器中删除@RequestMapping(“/”),然后将@GetMapping(“/”)放在第一个get方法上,将@GetMapping(“/{variable}”)放在第二个getWithPathVar()方法上?我尝试了很多不同的组合,但显然不是这个:)这个组合很有帮助。谢谢我使用的是SpringV5.2.8,默认配置为:(注释@InflosiveSilence添加的帮助…正如我前面提到的,我无法复制它,即使是对于
5.2.8
。顺便问一下,这两种方法会得到什么回报?再次重要的一点是:在这个ca中,您使用
@Controller
和端点而不使用
@restebody
,而不是
@RestController
。)因此,Spring应将返回值解释为视图名称