我有從MongoRepository擴展的接口。他們使用默認的mongodb數據庫。我想爲類定義數據庫名稱。如何在Spring數據中更改/定義Mongodb的默認數據庫?
public interface CustomerRepository extends MongoRepository<Customer, String> {
...
}
我該如何定義它?
我有從MongoRepository擴展的接口。他們使用默認的mongodb數據庫。我想爲類定義數據庫名稱。如何在Spring數據中更改/定義Mongodb的默認數據庫?
public interface CustomerRepository extends MongoRepository<Customer, String> {
...
}
我該如何定義它?
你只需要在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: ******
謝謝。我們能使用多個數據庫嗎? –
我想是的。找到此JPA的http://smasue.github.io/spring-yml-datasources,可以通過手動配置應用於Mongo。 –
感謝您分享代碼庫。 –
如果您正在使用上下文XML,請在XML中添加以下內容並定義數據庫配置。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<mongo:mongo-client credentials="user:[email protected]" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo"/>
<constructor-arg name="databaseName" value="myDBName"/>
</bean>
</beans>
或者,通過擴展AbstractMongoConfiguration並覆蓋getDatabaseName()來定義類。
@Configuration
public class SpringDBConfig extends AbstractMongoConfiguration
{
@Override
protected String getDatabaseName() {
return "testdatabase";
}
......
}
Spring Boot中沒有XML。 –
如果您在使用Spring啓動,下面的步驟可以幫助你。
在application.properties或yml描述符中定義以下屬性。注意屬性應該以spring.data.mongodb開頭。如果您使用Mongo 3.x java驅動程序,則應使用spring.data.mongodb.uri來提供uri配置。
spring.profiles: myprofile spring.data.mongodb.uri: mongodb://user:[email protected]: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));
}
}
生成項目,並運行你的春天啓動的應用程序
Java的罐子-Dspring.profiles.active =我的資料您-app.jar
你的數據庫名稱的意思是什麼爲什麼上課? 你的意思是說'文件'名稱(表名)的類? –
@SanjayRawat讓我說在我的mongod我有多個數據庫。我想用第一個。 –