Dans mon API REST d'amorçage printanier, je dois gérer HTTP POST en acceptant une liste fortement typée en tant qu'entrée:
@RestController
public class CusttableController {
static final Logger LOG = LoggerFactory.getLogger(CusttableController.class);
@RequestMapping(value="/custtable/update", method=RequestMethod.POST)
@ResponseBody
public String updateCusttableRecords(List<Custtable> customers) {
try {
for (Custtable cust : customers) {
Custtable customer = (Custtable) custtableDao.getById(Custtable.class,
new CusttableCompositeKey
(cust.getAccountnum(),cust.getPartition(),cust.getDataareaid()));
Dans la version Jersey de cette API, cela fonctionnait très bien, mais avec Spring Boot, cela me donne cette erreur:
org.springframework.beans.BeanInstantiationException: Failed to instantiate [Java.util.List]: Specified class is an interface
Quelle est la bonne façon pour moi d’accepter une liste fortement typée dans Spring Boot?
Essayez d'ajouter RequestBody annotation à la définition de votre méthode
@RequestMapping(value="/custtable/update", method=RequestMethod.POST)
@ResponseBody
public String updateCusttableRecords(@RequestBody List<Custtable> customers) {
//Method body
}
Pour moi, j'avais fait une faute de frappe en enveloppant accidentellement une classe dans une liste . Supprimer cette faute de frappe permettait à la sérialisation de se dérouler correctement via spring data rest + jackson.
List<MyClass> a; // typo
MyClass = a;// fix