我正在嘗試使用SpringBoot與Mongo數據庫交談。爲什麼我的spring引導(mongo)bean被創建/使用?
它正在使用spring-boot-starter-data-mongodb並自動配置一個默認的bean,它允許我的MongoRepository類與數據庫對話。
但是,我想覆蓋默認值。我可以使用application.properties,但我需要能夠在應用程序啓動時在命令行上將連接參數作爲選項傳遞。
我試着改變端口來打破它,我已經將調試添加到了Mongo配置中,並且似乎無論我做了什麼默認的彈簧配置都在使用。就好像@Configuration註釋被忽略。
我已經嘗試了各種配置主應用程序類(指定conf位置,將@Configuration添加到主類,帶和不帶@SpringBootApplication ...)的風格,但這裏是我現在的位置......
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;
}
}
這是一種方法,是的。但是這不是一個選項。 我需要將這些屬性設置爲代碼連接。 – DaFoot
然後自己創建一個org.springframework.boot.autoconfigure.mongo.MongoProperties'類型的bean - 它將被選中默認的一個。 –
看起來很有希望 – DaFoot