2017-09-06 4 views
-1

Ich habe einen Spring Server laufen und bis jetzt hatte ich keine Probleme mit dem Autowiring meiner Bohnen durch Feldinjektion. Aus irgendeinem Grund funktioniert dies unter bestimmten Umständen nicht. Ich möchte erreichen, dass meine DatabaseConfiguration in den Datenbankklassen autowired ist. Die DatabaseConfiguration wird aus den Anwendungseigenschaften mit den Annotationen geladen. Es lädt erfolgreich in meiner BeanConfig, wo ich diese Klasse autowired habe. Jetzt habe ich eine Bohne Definition für eine Datenbank wie folgt aus:Spring Autowired funktioniert nicht in BeanConfig

@Bean 
public Database getDatabase() { 
    return new Database(); 
} 

in der Datenbank Klasse eine Felddefinition für die Konfiguration wie folgt ist:

@Autowired 
DatabaseConfiguration config; 

Wenn die getDatabase() Funktion aufgerufen wird, Ich habe überprüft, dass die DatabaseConfiguration in der BeanConfig-Klasse korrekt autowired wird, aber aus irgendeinem Grund ist sie innerhalb der erstellten Instanz der Datenbank null.

Die Datenbankklasse befindet sich im project.databases-Paket, die DatabaseConiguration und BeanConfiguration befinden sich im Paket project.config.

meine Hauptanwendung ist in der Verpackung Projekt und wird mit diesen Anmerkungen kommentiert

@EnableScheduling 
@ComponentScan 
@EnableAutoConfiguration(exclude = { MongoAutoConfiguration.class, MongoDataAutoConfiguration.class }) 

Hat jemand eine Ahnung, warum die autowiring funktioniert nicht hier?

Antwort

0

Sie erstellen die Datenbank manuell - return new Database();. Der Frühling hat keine Chance, irgendetwas zu autradieren.

Sie sollten Spring entweder die Bean erstellen lassen oder die Config manuell zuweisen.