J'ai un projet Spring Boot existant (1.4.3.RELEASE) et j'essaie d'ajouter quelques fonctionnalités en utilisant le projet Cloud AWS. Toutefois, l'ajout de la dépendance au fichier de construction gradle provoque un problème apparent de cglib lors de l'instanciation de l'une de mes classes @Configuration.Spring Cloud AWS cglib issue
ajoutant la ligne suivante à Gradle construction et l'exécution de l'application:
compile("org.springframework.cloud:spring-cloud-starter-aws-messaging:1.1.3.RELEASE")
Causes:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.***.application.config.AwsConfig$$EnhancerBySpringCGLIB$$5301ed81]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.***.application.config.AwsConfig$$EnhancerBySpringCGLIB$$5301ed81.() at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
Il se plaint de ne pas trouver un constructeur non vide dans ma classe @Configuration, mais les sont pris en charge dans la dernière version de Spring. L'application démarre bien si je supprime la dépendance. Comment résoudre ce problème sans reconfigurer mes cours? Vous attendez une version mise à jour de Cloud AWS?
Cette version de la messagerie AWS est basée sur Spring Boot 1.3, qui utilise Spring 4.2 qui ne prend pas en charge les constructeurs non vides. Vous pourriez essayer de forcer la dépendance du ressort à 4.3 mais le fait qu'il utilise Spring Boot 1.3 le rend probablement inutilisable pour 1.4 (modifications de l'API interne pour Boot). –
Merci pour la réponse. J'ai reconfiguré la classe pour avoir un constructeur vide et autowire les dépendances dedans mais maintenant même le comportement autowiring ne fonctionne pas correctement. Je ne sais pas pourquoi l'ajout de ceci causerait un tel désordre dans le comportement de base du printemps, mais bon. Je vais voir si je peux trouver une solution de contournement. – koreys
Aussi juste pour mettre à jour ... J'ai rétrogradé la version Spring Boot à 1.3.8 et j'ai toujours le même problème où la classe de configuration n'obtient pas ses champs autowired. Enlevez cette dépendance et tout fonctionne comme il se doit. – koreys