Spring Boot Application中可配置的Mongo数据库URL和名称

时间:2016-10-24 11:30:28

标签: java spring mongodb spring-boot

我正在尝试通过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

我为databaseURLdatabaseName获取了空值。我的想法是在bean创建过程中仍然无法使用这些值。但我没有任何想法实现这一点。

1 个答案:

答案 0 :(得分:0)

您可以在配置中使用PropertySource来指定创建的属性文件的位置。示例代码如下:

@Configuration
@EnableAutoConfiguration
@PropertySource("application-test.properties")
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;
}
}

希望它有助于解决您的问题。