How to specifiy custom Request handling into spring MVC controller?

Viewed 27

I have defined an class for some specific handling:

public abstract class ListProvider {
  ...
  public abstract ResponseObject getResponse(RequestObject request) {}
}

I will create several derived class that I will define as services. The purpose is to use it to create a json API using Jackson to deserialize the RequestObject and to serialize the ResponseObject. For example:

@Service
public class ClientListProvider extends ListProvider {
  public ResponseObject getResponse(RequestObject request) {
    return ...
}

I can use it in a controller like that:

@RestController
@RequestMapping("/client")
public class ClientController {
    
  @AutoWired
  ClientListProvider provider;
  
  @PostMapping("/list")  
  public ResponseObject ResponseObject list(@RequestBody RequestObject request) {
    return provider.getResponse(request);
  }
}

But I would like to use it without the boiler plate, like:

@RestController
@RequestMapping("/client")
public class ClientController {
 
  @PostMapping("/list")
  @Provider(ClientListProvider.class)  
  public list() {}
}

Or maybe:

@RestController
@RequestMapping("/client")
@Provider(ClientListProvider.class,path="/list")  
public class ClientController {
}

Or something like that.

Do you know if there any way? If necessary I could replace the Request/ResponseObject by HttpServletRequest/Response or something else in the ListProvider interface.

0 Answers
Related