Arranque de molas e como configurar os detalhes de ligação ao MongoDB?
sendo novo no Spring Boot, estou a pensar em Como posso configurar os detalhes da ligação para o MongoDB. Eu tentei os exemplos normais, mas nenhum cobre os detalhes da conexão.
quero especificar a base de dados que vai ser usada e o url/porto da máquina que executa o MongoDB.
Alguma dica ou dica?4 answers
Só para citar Os documentos das botas:
Pode definir
spring.data.mongodb.uri
a propriedade para alterar o url,ou, em alternativa, indicar ahost/port
. Por exemplo, você pode declarar o seguinte em seuapplication.properties
:
spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017
Todas as opções disponíveis para spring.data.mongodb
prefixo são campos de MongoProperties
:
private String host;
private int port = DBPort.PORT;
private String uri = "mongodb://localhost/test";
private String database;
private String gridFsDatabase;
private String username;
private char[] password;
Num projecto maven cria um ficheiro src/main/resources/application.yml
com o seguinte conteúdo:
spring.profiles: integration
# use local or embedded mongodb at localhost:27017
---
spring.profiles: production
spring.data.mongodb.uri: mongodb://<user>:<passwd>@<url>:<port>/<dbname>
O arranque de molas irá usar automaticamente este ficheiro para configurar a sua aplicação. Então você pode iniciar a sua aplicação de inicialização de primavera com o perfil de integração (e usar o seu MongoDB local)
java -jar -Dspring.profiles.active=integration your-app.jar
Ou com o perfil de produção (e use o seu MongoDB de Produção)
java -jar -Dspring.profiles.active=production your-app.jar
Você pode definir mais detalhes estendendo a Abstractmongoconfiguração.
@Configuration
@EnableMongoRepositories("demo.mongo.model")
public class SpringMongoConfig extends AbstractMongoConfiguration {
@Value("${spring.profiles.active}")
private String profileActive;
@Value("${spring.application.name}")
private String proAppName;
@Value("${spring.data.mongodb.host}")
private String mongoHost;
@Value("${spring.data.mongodb.port}")
private String mongoPort;
@Value("${spring.data.mongodb.database}")
private String mongoDB;
@Override
public MongoMappingContext mongoMappingContext()
throws ClassNotFoundException {
// TODO Auto-generated method stub
return super.mongoMappingContext();
}
@Override
@Bean
public Mongo mongo() throws Exception {
return new MongoClient(mongoHost + ":" + mongoPort);
}
@Override
protected String getDatabaseName() {
// TODO Auto-generated method stub
return mongoDB;
}
}
spring.data.mongodb.host
e spring.data.mongodb.port
não são suportados Se estiver a usar o controlador Java Mongo 3. 0. Nesses casos, spring.data.mongodb.uri
deve ser usado para fornecer toda a configuração, assim:
spring.data.mongodb.uri=mongodb://user:[email protected]:12345