我有Spring-data-mongodb
项目的简单maven项目。我需要指定(覆盖)数据库连接细节。 MongoDB数据库使用默认设置(port = 27017)在localhost上运行。我正在尝试使用AppConfig
@Configuration
@EnableMongoRepositories
public class AppConfig extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "TestDatabase";
}
@Override
public Mongo mongo() throws Exception {
// wrong port on purpose
return new MongoClient("127.0.0.1", 27007);
}
}
我的主文件看起来像这样
public class MongoApp {
private static final Log log = LogFactory.getLog(MongoApp.class);
public static void main(String[] args) throws Exception {
MongoOperations mongoOps = new MongoTemplate(new MongoClient(), "database");
mongoOps.insert(new Person("Joe", 34));
log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class));
// mongoOps.dropCollection("person");
}
}
当我运行项目时,一切正常,但我不应该使用此配置。
项目结构
main
-AppConfig.java
-MongoApp.java
-Person.java
答案 0 :(得分:0)
我找到了解决方案。 我使用了这个配置:
@Configuration
public class AppConfig {
public @Bean
MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClient(), "mydb");
}
public @Bean
MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
return mongoTemplate;
}
}
主文件ApplicationContext
:
public class MongoApp {
private static final Log log = LogFactory.getLog(MongoApp.class);
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
mongoOperation.insert(new Person("Joe", 34));
log.info(mongoOperation.findOne(new Query(where("name").is("Joe")), Person.class));
//mongoOps.dropCollection("person");
}
}