Github link - here
fand ich eine awnser auf meine Frage und vielleicht eine Lösung RequestMapping in Echtzeit verwendet. Ich habe einen RestController erstellt, der alle HTTP-Petitionen annimmt, die die Petition an eine Hash-Map mit dem Uri-Mapping wie Schlüssel und einem Klassencontroller ähnlichen Wert stellen.
Die allgemeine Steuerung:
@RestController
public class GeneralController {
HashMap<String,PersonalizedController> petitions = new HashMap<String,PersonalizedController>();
@RequestMapping("**")
public ResponseEntity<Object> index(HttpServletRequest request,HttpServletResponse response,@RequestBody Object body) {
// Inicialization zone - this zone don't must exist
petitions.put("/dir/esta1", new PersonalizedController("esta1"));
petitions.put("/dir/esta2", new PersonalizedController("esta2"));
//-------------------------------------------------
return handlePetition(request,response);
}
private ResponseEntity<Object> handlePetition(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String petition = request.getRequestURI();
String method = request.getMethod();
return petitions.get(petition).makePetition(method,new String());
}
}
Die Controller-Klasse:
public class PersonalizedController {
private String name;
public PersonalizedController(String name) {
this.name = name;
}
public ResponseEntity<Object> makePetition(String method,Object body) {
// TODO Auto-generated method stub
switch (method) {
case "GET":
return doGet(body);
case "POST":
return doPost(body);
case "PUT":
return doPut(body);
case "DELETE":
return doDelete(body);
default:
return new ResponseEntity<Object>("",HttpStatus.METHOD_NOT_ALLOWED);
}
}
public ResponseEntity<Object> doGet(Object body) {
return new ResponseEntity<Object>("["+name+"] GET",HttpStatus.OK);
}
public ResponseEntity<Object> doPost(Object body) {
return new ResponseEntity<Object>("["+name+"] POST",HttpStatus.OK);
}
public ResponseEntity<Object> doDelete(Object body) {
return new ResponseEntity<Object>("["+name+"] DELETE",HttpStatus.OK);
}
public ResponseEntity<Object> doPut(Object body) {
return new ResponseEntity<Object>("["+name+"] PUT",HttpStatus.OK);
}
}
Warum Sie nicht Ihre wirkliche Situation erklären? Einfache Beispiele zu verwenden, ist nicht sinnvoll, weil sie nicht sagen, ob Sie auf eine gute Lösung hinarbeiten oder nicht. Die Leute neigen dazu, viel zu sagen: "Ich muss es so machen", aber wenn sie das wirklich so machen müssen, sollten sie in der Lage sein, den Grund dafür zu erklären. – Kayaman
Sie können keine Variable in Annotation verwenden. Dies ist einfach nicht möglich. Wenn Sie Ihr tatsächliches Problem beschreiben, wird es möglich sein, Ihnen zu helfen. – Oleg