J'essaie d'utiliser SpringBoot pour parler à une base de données Mongo.
Cela fonctionne en utilisant spring-boot-starter-data-mongodb et en configurant automatiquement un bean par défaut qui permet à mes classes MongoRepository de communiquer avec la base de données.
Cependant, je veux remplacer les valeurs par défaut. Je pourrais utiliser application.properties mais je dois pouvoir passer les paramètres de connexion en tant qu'options sur la ligne de commande au démarrage de l'application.
J'ai essayé de changer le port pour le casser, j'ai ajouté le débogage à la configuration de Mongo et il semble que quoi que je fasse, la configuration par défaut de Spring est utilisée. C'est comme si l'annotation @Configuration était ignorée.
J'ai essayé plusieurs façons de configurer la classe de l'application principale (en spécifiant l'emplacement de la conf, en ajoutant @Configuration à la classe principale, avec et sans @SpringBootApplication ...), mais voici où j'en suis pour le 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;
}
}