2016-04-20 9 views
0

に基づいてDataSourceAutoConfigurationを有効 春ブート・スターター・データ-JPA
は条件付きで春のブートを有効にする方法はありますEnvプロパティ/システムプロパティが存在する場合にのみ、datasourceautoconfigurationクラスに基づいています。春ブーツconditonally私は私のプロジェクトでは、以下の依存関係を持っているし、私のメインクラスで@SpringBootApplicationを持つシステムプロパティ

おかげ

答えて

0

あなたがfalseにプロパティ「spring.datasource.initialize」を定義した場合、初期化ロジックがスキップされることが表示されます。 DataSourcePropertiesは、「初期化」という名前の属性を持っており、これがDataSourceInitializerのデフォルトの実装で参照されて表示されていることを

あなたはDataSourceAutoConfiguration定義を見れば、それは構成プロパティにロードします...

enter image description here

...

enter image description here

私は、データソースの初期化をスキップするプロパティを使用することができるというようことをお読みください。

希望これは注釈@ConditionalOnPropertyDataSourceAutoConfigurationを拡張について

0

どのように役立ちますか?元のDataSourceAutoConfigurationを春から除外して、独自の実装をアプリケーションの一部にすることができます。このような

@Configuration 
@ConditiaonalOnProperty(value = "datasource.property.anything",matccchIfMissing==true) 
public class DataSourceInit extends DataSourceAutoConfiguartion { 
} 

、などとして、Springアプリケーションクラスのexcludeを追加:あなたはspring.autoconfigure.excludeプロパティを使用して自動構成を除外することができ

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) 
+0

こんにちはジェミニ、ありがとう。 datasource.property.anythingがtrueに設定されているときにアプリケーションを正常に起動できますが、オフにした場合(falseに設定した場合)、HibernateJpaAutoConfigurationクラスをロードすると失敗しています。 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class、HibernateJpaAutoConfiguration.class})を追加しました。そして今、それはfalseに設定されているときには動作していますが、trueに設定すると失敗します。 –

+0

'DataSourceAutoConfiguration'を有効にしたくないときに、それらをすべて除外しても問題ありません。あなたの 'datasource.property.anything'がfalseに設定されていた場合、何が失敗になるでしょうか?私の経験上、 '@ ConditionalOnProperty'は' HibernateJpaAutoConfiguration'クラスをロードする必要があるかどうかを決定します。それ以外の場合は、あなたのプロジェクトをギブスに公開するか、それとも私に郵送してください。私はそれについてさらに研究したいと思います。私が達成すれば、有用な情報を公開します。 –

0

。あなたは、システムのプロパティを使用して、そのプロパティを設定できます。

-Dspring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 

ます。またSPRING_AUTOCONFIGURE_EXCLUDE環境変数を使用して、それを設定することができます。

関連する問題