我有从MongoRepository扩展的接口。他们正在使用mongodb的默认数据库。我想为类定义数据库名称。
public interface CustomerRepository extends MongoRepository<Customer, String> {
...
}
我该如何定义它?
答案 0 :(得分:7)
您只需在application.properties
文件中定义相应的mongobd属性,或者如果您想要yml语法,则在application.yml
中定义道具。在src/main/resources
下,application.properties
应该已经存在。
application.properties
:
spring.data.mongodb.host=<hostname>
spring.data.mongodb.port=27017
spring.data.mongodb.database=<dbname>
spring.data.mongodb.username=<usernamr>
spring.data.mongodb.password=******
或
application.yml
:
spring:
data:
mongodb:
host: <hostname>
port: 27017
database: <dbname>
username: <usernamr>
password: ******
答案 1 :(得分:3)
如果您使用的是Spring Boot,以下步骤可能会对您有所帮助。
在application.properties或yml描述符中定义以下属性。请注意,属性应该以spring.data.mongodb开头。如果您使用的是Mongo 3.x java驱动程序,则应使用spring.data.mongodb.uri来提供uri配置。
spring.profiles: myprofile spring.data.mongodb.uri: mongodb://user:passwd@url:port/dbname spring.data.mongodb.database:myDB
编写SpringMongoConfiguration。
@Configuration
@EnableMongoRepostories("path.to.your.repository")
public class SpringMongoConfiguration extends AbstractMongoConfiguration {
@Value("${spring.data.mongodb.uri}")
private String mongoDB;
@Value("${spring.data.mongodb.uri}")
private String mongoURI;
@Override
protected String getDatabaseName() {
// TODO Auto-generated method stub
return 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(new MongoClientURI(myURI));
}
}
构建项目并运行Spring启动应用程序
java -jar -Dspring.profiles.active = myprofile your-app.jar
答案 2 :(得分:-1)
如果您使用上下文XML,请在XML中添加以下内容并定义数据库配置。
@Configuration
public class SpringDBConfig extends AbstractMongoConfiguration
{
@Override
protected String getDatabaseName() {
return "testdatabase";
}
......
}
或者,通过扩展AbstractMongoConfiguration定义一个类并覆盖getDatabaseName()。
input