Spring 数据 mongodb 覆盖配置
Spring data mongodb override configuration
我有简单的 Maven 项目和 Spring-data-mongodb
项目。我需要指定(覆盖)数据库连接详细信息。 MongoDB 数据库 运行s 在本地主机上,默认设置(端口=27017)。我正在尝试使用 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
我找到了解决方案。
我使用了这个配置:
@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");
}
}
我有简单的 Maven 项目和 Spring-data-mongodb
项目。我需要指定(覆盖)数据库连接详细信息。 MongoDB 数据库 运行s 在本地主机上,默认设置(端口=27017)。我正在尝试使用 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
我找到了解决方案。 我使用了这个配置:
@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");
}
}