Autowire MongoRepository im Frühjahr MVC

8

Ich möchte MongoRepository in meine Serviceklasse integrieren, und das kann ich nicht. Ich benutze Java Config. Dies ist meine Repository-Klasse:

%Vor%

Dies ist der Dienst, der UserRepository verwendet:

%Vor%

Dies ist Teil meines Controllers, der den Dienst verwendet:

%Vor%

Meine Haupt-Java-Config-Klasse sieht so aus:

%Vor%

MjurAppConfig:

%Vor%

Und mongo config:

%Vor%

Ausnahme:

%Vor%

Ich suchte nach einer Lösung für dieses Problem, aber ich konnte nichts finden. IMO Component Scan sollte das Repository finden und es an den Spring-Kontext binden. Leider funktioniert es nicht so.

    
Ma Kro 13.11.2014, 19:23
quelle

3 Antworten

13

Ok, das Problem war mit @EnableMongoRepositories Annotation.

Wenn ich den Paketnamen zu seinem Körper hinzugefügt habe (so sah es aus wie: @EnableMongoRepositories ({"prv.makro.mjur.repository"})) Ich konnte mein UserRepository automatisch starten

    
Ma Kro 13.11.2014, 22:01
quelle
1
  1. Erstellen Sie Ihre Repository-Schnittstelle mit @NoRepositoryBean Annotation.
%Vor%
  1. Erstellen Sie Ihre Repository-Implementierung
%Vor%
  1. Fügen Sie der entsprechenden Konfigurations- oder Anwendungsklasse @EnableMongoRepository Annotation hinzu.
%Vor%     
Fırat KÜÇÜK 19.05.2017 08:42
quelle
0

BEARBEITEN (nach Kommentaren und Ändern des geposteten Codes)

Dies passiert, weil die Spring Web-Anwendung zwei Kontexte hat: 1 ist der Stammkontext und ein weiterer ist der Webkontext (der, den Sie mit der @EnableWebMvc Annotation registrieren).

Bitte tun Sie Folgendes:

1) Entfernen Sie die @Import Annotation von Ihrem MjurWebAppConfig - denken Sie daran, dass dies Ihr Web-Kontext ist. 2) Fügen Sie @Import in der MjurAppConfig config im Wesentlichen wie folgt hinzu:

%Vor%

Diese Schritte sollten Ihre autoverwirkte DAO-Bean in Ihrer Service-Bean sichtbar machen.

Vor EDIT:

Ich wette, dass Ihre TestService -Bohne unter dem Paket prv.makro.mjur.service liegt, was von der Komponente Scan-Annotation abhängt:

%Vor%

Mit anderen Worten: @ComponentScan kann Ihren TestService nicht sehen, um die @Autowired Abhängigkeit zu registrieren.

Stellen Sie sicher, dass TestService beim Scannen der Komponente und unter der obigen Annahme sichtbar ist, wenn Sie Folgendes tun:

%Vor%

sollte es funktionieren.

    
dimitrisli 13.11.2014 20:07
quelle

Tags und Links