Spring Boot ignoriert Beans aus der Java-Konfigurationsklasse mit dem Spring-Profil

8

Wenn ich meine Anwendung auf Eclipse mit einem klassischen Kontext-Laden laufe, keine Sorge, die Beans, die in der Config-Klasse definiert sind, die dem gewählten Spring-Profil entspricht, sind korrekt instanziiert.

%Vor%

Aber wenn ich die Anwendung mit Spring Boot starte, werden diese Beans nicht instanziiert.

%Vor%

Hier ist die Java-Konfigurationsklasse für das Springprofil "dev":

%Vor%

Hier die Klasse AbstractPersistenceConfig , die die anderen Beans enthält, die nicht instanziiert sind:

%Vor%

Ich habe versucht, die Anwendung mit den folgenden Befehlen mit dem gleichen Ergebnis auszuführen:

%Vor%

Konkret ist die Bean " sessionFactory " nicht instanziiert und kann nicht in meine GenericDaoImpl Klasse ...

eingefügt werden

Der Stacktrace:

%Vor%

Ich benutze den Spring Boot 1.0.2.RELEASE ohne das Spring Boot Parent POM. Ich definiere das nur auf dem POM:

%Vor%

Hast du ein paar Ideen?

Vielen Dank !!

    
Didasko 30.05.2014, 17:13
quelle

2 Antworten

8

Ich denke, dass du @Import deine @Configuration -Klasse direkt verwenden oder die Annotation @ComponentScan verwenden musst. Ihr erstes Beispiel, das ClassPathXmlApplicationContext verwendet, wird funktionieren, weil die XML-Verarbeitung zu einem frühen Zeitpunkt stattfindet und die <component-scan> Ihre @Configuration -Klassen vor ihrer Verarbeitung findet.

Im zweiten Beispiel hat SpringApplication bereits mit der Verarbeitung Ihrer @Configuration -Klassen begonnen und das XML wird über @ImportResource geladen. Bis zu diesem Zeitpunkt ist es nicht mehr möglich, dass <component-scan> der XML-Datei @Configuration hinzufügt.

Antwort sortieren: Probieren Sie @ComonentScan in Ihrer Klasse BasketHandlerLoader aus.

    
Phil Webb 31.05.2014, 00:07
quelle
0

Großartig !!! Es klappt! Ein großes Dankeschön Phil (für die Lösung und die Erklärungen!): -)

%Vor%     
Didasko 31.05.2014 00:31
quelle