Java Spring启动-不明确映射
在这件事上扯我的头发完全没有意义Java Spring启动-不明确映射,java,spring,rest,spring-boot,Java,Spring,Rest,Spring Boot,在这件事上扯我的头发完全没有意义 @RestController("/firmwareAShkcwdsdskl") public class FirmwareController { @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Result> createNewFirmwareVersion(DetailedFirmwareVersionRequest
@RestController("/firmwareAShkcwdsdskl")
public class FirmwareController {
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Result> createNewFirmwareVersion(DetailedFirmwareVersionRequest detailedFirmwareVersionRequest) {
// Code Block
}
}
类名、方法名、请求映射和参数都是唯一的,我只是不明白
正如你所说,我在尝试各种字符串更改以使其最初工作时陷入了纯粹的挫败感,但是如果有人能帮我确定问题所在,我将非常感激
编辑:使用Spring Boot 2.2.4可以。。我设法把它编译了。。我想我误解了如何使用@RestController注释 如果你提供
@RestController
@RequestMapping("/firmware")
而不是
@RestController("/firmware")
它将建立。我想我假设控制器上的默认参数会更有用,并且看起来像我从构建消息中预期的那样工作
希望这对别人有帮助 正如你在自己的回答中提到的:是的,你误解了。这是一个容易混淆的问题 @RestController的值是组件名称,而不是请求映射路径。查看org.springframework.web.bind.annotation.RestControllervalue的源代码 它与spring上下文中的和其他内容非常相似。您现在有了正确的注释: @RestController @请求映射/固件 公共类firmwarestcontroller{ // ... }
框架抱怨存在来自2个控制器的post path/,其中未为其中任何一个控制器指定映射,因此无法区分确切的路径 请尝试以下代码:
@RestController
@RequestMapping("/firmwareAShkcwdsdskl")
public class FirmwareController {
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Result> createNewFirmwareVersion(DetailedFirmwareVersionRequest detailedFirmwareVersionRequest) {
// Code Block
}
}
@RestController
@RequestMapping("/jobs/firmwareUpgrade")
public class FirmwareUpgradeController {
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Result> createNewJob(DetailedFirmwareUpgradeRequest detailedFirmwareUpgradeRequest) {
// Code Block
}
}
@RestController("/firmware")
@RestController
@RequestMapping("/firmwareAShkcwdsdskl")
public class FirmwareController {
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Result> createNewFirmwareVersion(DetailedFirmwareVersionRequest detailedFirmwareVersionRequest) {
// Code Block
}
}
@RestController
@RequestMapping("/jobs/firmwareUpgrade")
public class FirmwareUpgradeController {
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Result> createNewJob(DetailedFirmwareUpgradeRequest detailedFirmwareUpgradeRequest) {
// Code Block
}
}
@RestController
@RequestMapping("/api/feeds")
class FeedsController {
//Constructor inject fields here
@Autowired
FeedsController() {
}
@GetMapping("/")
ResponseEntity<Map<String, String>> get() {
return ResponseEntity.ok(Collections.emptyMap());
}
@PostMapping("/")
ResponseEntity<Map<String, String>> post() {
return ResponseEntity.ok(Collections.emptyMap());
}
/**
* Standard way to implement delete is to soft delete
* @return
*/
@DeleteMapping("/")
ResponseEntity<Map<String, String>> delete() {
return ResponseEntity.ok(Collections.emptyMap());
}
}