【发布时间】:2016-10-24 11:30:27
【问题描述】:
我正在尝试通过application-{environment-name}.properties 配置 mongodb 属性以连接到 mongodb。
这是我与 mongo 建立连接的代码:
@Configuration
@EnableAutoConfiguration
public class SpringMongoConfig {
@Value("${db.connectionURL}")
private String databaseURL;
@Value("${db.name}")
private String databaseName;
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
System.out.println("database url: " + databaseURL + " db name: " + databaseName);
return new SimpleMongoDbFactory(new MongoClient(databaseURL), databaseName);
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
return mongoTemplate;
}
}
这是我的application-test.properties 文件:
db.connectionURL=localhost
db.name=rahab
我得到了 databaseURL 和 databaseName 的空值。我的想法是在 bean 创建期间这些值仍然不可用。但我没有任何想法来实现这一点。
【问题讨论】:
-
您是否激活了
test个人资料?尝试在application.properties中指定spring.profiles=test,看看它是否仍然不起作用 -
@OriDar 尝试过这样做。在终端中,我看到数据库 url 和名称被打印了两次。一个实际值后跟空值,之后我在终端上收到此消息:
java.lang.IllegalArgumentException: Database name must not be empty! -
您还应该通过将
@Profile("test")添加到SpringMongoConfig来激活配置文件。但是请注意,指定的 mongo 配置仅可用于测试配置文件。您应该阅读 Spring Boot 参考文档的第 24 节(配置)第 25 节(配置文件)和 mongodb 部分以更好地理解 -
我不知道您两次打印的消息是什么。我怀疑您有重复的配置类,其中一个与配置文件一起正确设置,而另一个没有
标签: java spring mongodb spring-boot