Ich versuche SpringBoot zu verwenden, um mit einer Mongo-Datenbank zu sprechen.Warum wird meine Spring Boot (Mongo) Bean nicht erstellt/verwendet?
Es arbeitet mit Spring-Boot-Starter-Data-Mongodb und automatische Konfiguration einer Standard-Bean, die meine MongoRepository-Klassen mit der DB ok sprechen können.
Allerdings möchte ich die Standardwerte überschreiben. Ich könnte application.properties verwenden, aber ich muss in der Lage sein, die Verbindungsparameter als Optionen in der Befehlszeile übergeben, während die Anwendung gestartet wird.
Ich habe versucht, den Port zu ändern, um es zu brechen, habe ich Debugging in die Mongo-Konfiguration hinzugefügt und es scheint, was auch immer ich tun, die Standard-Spring-Konfiguration wird unabhängig verwendet. Es ist, als ob die Annotation @Configuration ignoriert wird.
Ich habe verschiedene Varianten der Konfiguration der Hauptanwendungsklasse ausprobiert (Angabe von conf location, Hinzufügen von @Configuration zur Hauptklasse, mit und ohne @SpringBootApplication ...), aber hier bin ich im Moment ... .
package somepackage
@EnableAutoConfiguration
@ComponentScan
public class MyApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);
....
}
package somepackage.conf; // should be picked up by ComponentScan, no?
@Configuration
public class MongoConf {
@Bean
public MongoClientFactoryBean mongo() throws Exception {
MongoClientFactoryBean mongo = new MongoClientFactoryBean();
/*
setting to silly values to try to prove it is trying to create connections using this bean - expected to see errors because can't create connection... */
mongo.setHost("flibble");
mongo.setPort(345);
return mongo;
}
}
Das ist ein Weg, ja. Aber ist keine Option für diesen. Ich muss diese Eigenschaften auf die Verbindung von Code festlegen. – DaFoot
Dann erstellen Sie eine Bean vom Typ 'org.springframework.boot.autoconfigure.mongo.MongoProperties' selbst - es wird über die Standard ausgewählt. –
Das sieht vielversprechend aus – DaFoot