Donc, j'essaie de connecter Java Spring à mongodb et d'utiliser un EnsachTyID, mais cela donne toujours à l'erreur de pointeur NULL.
package pt.project.ProvaConceito_BackEnd; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProvaConceitoBackEndApplication { public static void main(String[] args) { SpringApplication.run(ProvaConceitoBackEndApplication.class, args); } }
mongodb p>
pojos p>
référentiels p>
Je vais partager le code que j'ai maintenant: p>
MongodService strong> p> UserService userService = new UserService();
3 Réponses :
N'utilisez pas Puisque vous avez déjà annoté le ANNOTTEZ ANNOTATER LE supprimer Assurez-vous d'avoir une classe avec Nouveau code> pour créer un objet de cette façon, car le ressort n'aura aucune connaissance de cet objet et ne pourra pas l'injecter.
Userservice code> avec
@service code> vous devez utiliser
@autowired code> annotation p>
USEREPOSITOIREL code> classe avec
@Repository code> p>
requis = faux code> de
userservice code> Classe p>
@springbooPlication code> Annotation dans
pt.project.provaconceo_backend code> package. P> p>
Je viens d'essayer ça et je n'ai pas travaillé, m'a donné la même erreur exacte. Mais je pense que c'est un problème de @Autowired parce que si je supprimais le "Requis = false" de userservice, cela me donne une erreur de compilation: champ userpository dans pt.project.provaconceo_backend.mongodb.uSerservice nécessitait un haricot de type 'pt.project. ProvaconceOtO_Backend.repositories.Serrepositor Y 'qui n'a pas pu être trouvé. Le point d'injection a les annotations suivantes: - @ org.springframework.beans.factory.annotation.Autowired (REQR IRED = vrai)
Annotate The USERPOSITORY CODE> Classe avec
@Repository code> et supprimer
requis = false code>
Où avez-vous @springbooTApplication code>? Il devrait être sur une classe qui est à
pt.project.provaconceo_backend code> package
Vous avez toujours la même erreur après avoir ajouté @Repository code>? Pouvez-vous commettre le code dans certains repo dans Github?
Vous devez mettre à jour votre référentiel et utilisateur.class pour avoir un type d'identifiant de chaîne au lieu d'entier. Ceci est requis pour les référentiels de Mongo. Peut ne pas résoudre complètement votre problème mais sera une étape dans la bonne direction
@Repository public interface UserRepository extends MongoRepository<User, String> { }
Merci pour votre réponse, j'ai fait les modifications mais oui, j'ai toujours les mêmes problèmes.
Je suivrais les suggestions d'autres contributeurs pour supprimer le mot-clé "Nouveau" de votre MongodService et utilisez aussi l'annotation @Repository. P>
AutoWiring ne fonctionne que si tous les composants qu'il reposent sont également autonomes. Donc, dans votre cas parce que le MongodService utilise de nouveau pour le userservice, il s'attend à ce que le référentiel utilise "nouveau" aussi. Vous devez à la place AutoWire à tous les niveaux et supprimer le fichier requis = FALSE de la mise en forme de la mise en forme automatique dans les userservice. P>
Le référentiel requiert l'annotation @Repository, sinon, lorsque le ressort scanne son composant le référentiel ne sera pas ramassé sans elle. @Repository @RestController, etc. Les stéréotypes sont tous des stéréotypes pour @Component avec des degrés divers de fonctionnalités supplémentaires p>
De plus, votre constructeur d'utilisateurs n'a pas d'identifiant dedans
Avez-vous essayé d'annoter
userservice code> avec
@autowired code> au lieu de l'instancier avec
nouveau userservice () code>?
Je viens d'essayer ça et donne la même erreur
N'utilisez pas
neuf code> vous devez l'injecter. Remontez le
requis code> et il ne commencera probablement plus. Placez votre
@springbooPlication Code> Classe annotée dans
pt.project code> et redémarrez et maintenant, cela fonctionnera.
@ M.Deinum je l'ai, je viens de modifier le poteau afin que vous puissiez le vérifier