spring-projects / spring-data-rest

Simplifies building hypermedia-driven REST web services on top of Spring Data repositories
https://spring.io/projects/spring-data-rest
Apache License 2.0
905 stars 558 forks source link

Documentation uses incorrect annotation in the code example #2352

Open sergey-morenets opened 5 months ago

sergey-morenets commented 5 months ago

Hi

Current documentation section that describes overriding default response handlers (https://docs.spring.io/spring-data/rest/reference/customizing/overriding-sdr-response-handlers.html) states multiple times that @RepositoryRestController annotation should be used:

Sometimes, you may want to write a custom handler for a specific resource. To take advantage of Spring Data REST’s settings, message converters, exception handling, and more, use the @RepositoryRestController annotation instead of a standard Spring MVC @Controller or @RestController. Controllers annotated with @RepositoryRestController are served from the API base path defined in RepositoryRestConfiguration.setBasePath, which is used by all other RESTful endpoints (for example, /api). The following example shows how to use the @RepositoryRestController annotation:

However in the code block after this text @BasePathAwareController annotation is used:

@BasePathAwareController
class ScannerController {

  private final ScannerRepository repository;

  ScannerController(ScannerRepository repository) { 
    repository = repository;
  }

  @GetMapping(path = "/scanners/search/producers") 
  ResponseEntity<?> getProducers() {

    List<String> producers = repository.listProducers(); 

    //
    // do some intermediate processing, logging, etc. with the producers
    //

    CollectionModel<String> resources = CollectionModel.of(producers); 

    resources.add(linkTo(methodOn(ScannerController.class).getProducers()).withSelfRel()); 

    // add other links as needed

    return ResponseEntity.ok(resources); 
  }
}

Spring Data REST: 4.2.1