2016-05-14 49 views
2

我有從MongoRepository擴展的接口。他們使用默認的mongodb數據庫。我想爲類定義數據庫名稱。如何在Spring數據中更改/定義Mongodb的默認數據庫?

public interface CustomerRepository extends MongoRepository<Customer, String> { 
    ... 
} 

我該如何定義它?

+0

你的數據庫名稱的意思是什麼爲什麼上課? 你的意思是說'文件'名稱(表名)的類? –

+0

@SanjayRawat讓我說在我的mongod我有多個數據庫。我想用第一個。 –

回答

5

你只需要在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: ****** 
+0

謝謝。我們能使用多個數據庫嗎? –

+0

我想是的。找到此JPA的http://smasue.github.io/spring-yml-datasources,可以通過手動配置應用於Mongo。 –

+0

感謝您分享代碼庫。 –

0

如果您正在使用上下文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"; 
    } 
    ......   
} 
+0

Spring Boot中沒有XML。 –

2

如果您在使用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

相關問題