我有一个@Controller:

@Controller("/")
public class GreetingController {

  @GetMapping("/greeting")
  public String get() {
    return "greeting";
  }
}


还有一个@RestController:

@RestController("/test")
public class TestRest {

  @RequestMapping()
  public List<TestDTO> get() {
    List<TestDTO> dtos = new ArrayList<>();
    dtos.add(new TestDTO("value1","value2"));
    dtos.add(new TestDTO("value1","value2"));
    return dtos;
  }
}


@Controller可以正常工作,并在src/main/resources/templates/greeting.html处提供静态HTML页面

但是@RestController不起作用,我得到的都是404。

如果我将方法从@RestController移到@Controller并添加@ResponseBody批注,则它将开始工作。

如何将控制器分为不同的类?

最佳答案

@RestController@Controller不会将资源路径作为参数。也许尝试一些类似...

@RestController
@RequestMapping("/test")
public class TestRest {

  @RequestMapping(method = RequestMethod.GET)
  public List<TestDTO> get() {
    List<TestDTO> dtos = new ArrayList<>();
    dtos.add(new TestDTO("value1","value2"));
    dtos.add(new TestDTO("value1","value2"));
    return dtos;
  }
}

10-06 10:20