2017-10-14 6 views
0

私はSpring-data-mongodbプロジェクトで単純なmavenプロジェクトを持っています。そして、私はデータベース接続の詳細を指定(オーバーライド)する必要があります。 MongoDBデータベースはデフォルト設定(port = 27017)でlocalhost上で動作します。私は、プロジェクトのすべてが正常に動作しますが、私はそれがこの設定といけない実行すると私の主なファイルは、このスプリングデータmongodbオーバーライド設定

public class MongoApp { 

    private static final Log log = LogFactory.getLog(MongoApp.class); 

    public static void main(String[] args) throws Exception { 

    MongoOperations mongoOps = new MongoTemplate(new MongoClient(), "database"); 
    mongoOps.insert(new Person("Joe", 34)); 

    log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); 

// mongoOps.dropCollection("person"); 

    } 
} 

のように見えますAppConfig

@Configuration 
@EnableMongoRepositories 
public class AppConfig extends AbstractMongoConfiguration { 

    @Override 
    protected String getDatabaseName() { 
     return "TestDatabase"; 
    } 

    @Override 
    public Mongo mongo() throws Exception { 
     // wrong port on purpose 
     return new MongoClient("127.0.0.1", 27007); 
    } 

} 

使用しようとしています。

プロジェクト構造

main 
-AppConfig.java 
-MongoApp.java 
-Person.java 
+0

Everythinで結構です。それでは、あなたは何を求めていますか?あなたはapplication.propertiesから設定を取得したいですか? – barbakini

+0

私はそれをする方法を知っていません...私はちょうどなぜこれが働いているのかわかりません...指定されたポート27007が間違っているので。私のローカルdbは27017で動く。だから、私のAppConfigは無視されていると思う。 – TomP

+0

dbから何かを取得しようとしましたか? Springは遅延接続を確立できます。したがって、最初のリクエストまで接続例外はありません – barbakini

答えて

0

私は解決策を見つけました。 ApplicationContext

@Configuration 
public class AppConfig { 

    public @Bean 
    MongoDbFactory mongoDbFactory() throws Exception { 
     return new SimpleMongoDbFactory(new MongoClient(), "mydb"); 
    } 

    public @Bean 
    MongoTemplate mongoTemplate() throws Exception { 

     MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory()); 

     return mongoTemplate; 

    } 

} 

、メインファイル: 私は、この設定を使用し

public class MongoApp { 

    private static final Log log = LogFactory.getLog(MongoApp.class); 

    public static void main(String[] args) throws Exception { 

     ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); 
     MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate"); 

     mongoOperation.insert(new Person("Joe", 34)); 
     log.info(mongoOperation.findOne(new Query(where("name").is("Joe")), Person.class)); 
      //mongoOps.dropCollection("person"); 
    } 
} 
関連する問題