Ich bin jetzt ziemlich verwirrt, ich möchte @Autowired MongoClient Attribut in einer meiner Controller-Klassen verwenden, aber ohne Erfolg. Der schwierige Teil davon ist, dass @Autowired von meinem @RestController funktioniert.Spring Boot - Autowired MongoClient
@RestController
public final class WebController {
/** mongoClient */
@Autowired
private MongoClient mongoClient; <- here it's working ...
...
}
aber:
@Controller
public final class MongoUsersDAO {
/** mongoClient */
@Autowired
private MongoClient mongoClient; <- not working ...
...
}
hier bekomme ich null.
Ich glaube nicht, dass das Problem der Komponente Scan während mein @SpringBootApplication bei xyz, mein @RestController bei xyzt befindet sich wäre und meine @Controller bei xyzk Pakete sollten daher Stand von ihnen sein gescannt von Spring. (Die Eclipse markiert auch meine @Controller als eine Spring-Klasse)
Was könnte sonst noch das Problem sein?
Hinweis: Wenn ich dies zu meinem @Controller hinzufügen es funktioniert gut, aber die @Autowired noch wount Arbeit:
@PostConstruct
public void init() {
System.out.println("INIT");
}
Hinweis: In der genannten MongoUsersDAO die autowired Sache überhaupt nicht funktioniert, ich Ich habe versucht, eine einfache Eigenschaft aus den application.properties zu erhalten, ohne Erfolg.
seltsam. Irgendwelche Protokolle? Irgendwelche, wo Sie neue MongoUsersDAO() angerufen haben? . Seltsam, warum DAO-Klasse mit @Controller annotiert ist? – Barath
Ich habe versucht, es mit Service, Komponente usw. zu kommentieren. Der neue mongoUsersDAO() wird innerhalb des WebControllers aufgerufen, wenn eine neue Anfrage kommt. (Es ist noch eine Test-Implementierung) –
Das ist das Problem. Rufen Sie nicht neu mongoUserdDao() auf. Wenn Sie dies tun, wird das Autowiren nicht passieren. – Barath