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