2017-07-04 3 views
0

1つのパッケージに複数のリポジトリインタフェースが定義されています。ただし、それぞれのデータベース設定で使用するために、グループで個別に構成したいと考えています。 @EnableMongoRepositoriesは、パッケージをグループ化の単位として考えているようです。複数のパッケージにインターフェイスを分割しなくても、複数のリポジトリ構成を実現する方法はありますか?SpringのデータMongoDBに含める特定のリポジトリクラスを指定する方法はありますか?

+1

を介して活性プロファイルの定義を使用すると、プロファイルによってグループ化を検討しています'@ Profile'を介して? – fg78nc

+1

もちろん、Springのプロファイルや自動設定を使った条件付き有効化を使うことはできますが、別のグループに属するクラスを分離する新しい方法を発明しようとしているのはなぜか分かりません。ちょうど別のパッケージを使用して移動してください。 –

+0

@AbhijitSarkarはい、別のパッケージを作成して完了するのは簡単です。しかし、時には、特定のプロジェクトの慣行に従い、関係する人々が構造を見るだけで各コンポーネントの機能を容易に推測できるようにします。 –

答えて

0

リンク明確な財産元に各プロファイル(.propertiesファイル)

@Configuration 
    public class AppConfig 
    { 
     @Configuration 
     @Profile("dev") 
     @PropertySource("classpath:localdb.properties") 
     static class LocalDb 
     { } 

     @Configuration 
     @Profile("prod") 
     @PropertySource({"classpath:remotedb.properties"}) 
     static class RemoteDB 
     {} 

は、VMの引数

-Dspring.profiles.active=dev 

またはプログラム的

SpringApplication.setAdditionalProfiles(..) 
//or 
ConfigurableEnvironment environment = this.applicationContext.getEnvironment(); 
environment.setActiveProfiles("dev"); 

// or in case of WebAppContext via web.xml 
<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>dev</param-value> // or prod 
</context-param> 

//or in case of WebAppContext if using servlet 3.1+ container set programatically 
servletContext.setInitParameter("spring.profiles.active", "dev"); 
関連する問題