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.