2016-03-31 5 views
0

私はHibernateとSpring Dataで春のブートプロジェクトを持っています。複数のプロファイルがあるので、プロジェクトをテストプロファイル、実行プロファイルなどで実行できます。すべてのプロファイルで異なるHibernateプロパティが必要です。 私はむしろ.propertyファイルでJavaクラスよりも保持プロパティを定義したいとします。 application.propertiesには、プロファイルをapplication- {profile} .propertiesとして指定する機能があります。残念ながら、これはhibernate.propertiesの場合ではありません。またはそれは? .propertiesファイルを使用してプロファイルごとに異なる休止状態のプロパティを注入する方法はありますか?プロファイルごとに異なる休止状態のプロパティ

+0

提案したソリューションのいずれかを試しましたか選択しましたか? –

答えて

1

文字列があります。それはpersistenceXmlLocationと呼ばれ、Beanを作成し、アクティブなプロファイルに基づいて異なる値を持つことができます。例えば:あなたはおそらく、あなたのConfigurationクラスにEnvironmentを配線やベースでこれを達成でき

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Profile; 

@Configuration 
@Profile("test") 
public class TestDatabaseConfig { 

    @Bean(name = "persistenceXmlLocation") 
    public String persistenceXmlLocation() { 
     return "classpath:META-INF/test-persistence.xml"; 
    } 
} 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Profile; 

@Configuration 
@Profile("dev") 
public class DefaultDatabaseConfiguration { 

    @Bean(name = "persistenceXmlLocation") 
    public String persistenceXmlLocation() { 
     return "classpath:META-INF/persistence.xml"; 
    } 
} 

は、その後、あなたの異なるプロファイル、この場合testのために、あなたはこれを持っていると思いますアクティブなプロファイルが異なるpersistence.xmlの場所を返します。

0

ですから、フィルタ下のsrc /メインフォルダを追加し、プロファイルごとに、すべての設定ファイルを置くことができ

をフィルタリング

Mavenのressourceを使用して、最も簡単な方法がありますそのフォルダの中にex:(application-test.properties、application-run.properties ...)、このコードをあなたのポームに追加してください:

<build> 
    <!--enter code here --> 
<resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
     <filters> 
      <filter>src/main/filters/application-${env}.properties</filter> 
     </filters> 

</build> 

そして、あなたは、アプリテストファイルを選択したい場合ので、あなたは、たとえば-Denv =テストを追加することにより、プロファイルに応じ、あなたの設定ファイルを取得することができます(mvn clean package -Denv=test

1

あなたは春のブートを使用している場合(Iあなたはspring-bootタグで質問にタグを付けるとyesと仮定します)、application.propertiesまたはapplication- {profile} .propertiesによって既にSpringブートによってロードされている休止状態を設定できます。アカウントの3つのレベルがサポートされていることを考慮に入れてください:

  • JPAプロバイダの一般的なプロパティ。例:いくつかの直接のHibernateプロパティ

  • spring.jpa.show-SQL =。例:= org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.hibernate.ddl-自動

    spring.jpa.hibernate.naming-戦略= JPAプロバイダの

  • その他のプロパティを検証します。あなたの場合はhibernateと同じプロパティがあり、プロパティ名にはspring.jpa.propertiesを追加するだけです。例:

    spring.jpa.properties.hibernate.format_sql =真 spring.jpa.properties.hibernate.generate_statistics = falseを

JpaPropertiesだけでなく、春のブートリファレンスドキュメントを見てみましょう最初の2つのレベルでサポートされているプロパティを確認します。