これまでのシナリオはこれまでと同じです。 spring-bootアプリケーションで、異なるスコープの異なるデータベースにアクセスする方法を教えてください。
@Bean
@ConfigurationProperties("database")
public DataSource database1DataSource() {
return DataSourceBuilder.create().build();
}
すぐ、SQLクエリをテストするために、私はこれを追加し、
@Bean
@ConfigurationProperties("testdatabase")
public DataSource myperksTestDataSource() {
return DataSourceBuilder.create().build();
}
同様に、IはPlatformTransactionManager
とSqlSessionFactory
ための2つの方法をそれぞれ作成しました。私はSpringブートがSqlSessionFactory
をピックアップし、2つを作成すると競合が発生し、IllegalStateException
にアプリケーションコンテキストをロードできませんでした。
状況:
私は2つのデータベース接続、生産用と統合テストのために別のものを作成したいです。私はそれぞれapplication.yml
ファイルの設定を作成しました。私は春に適切な設定を取りたいと思う。私は@Primary
で生産豆を注釈付き
を試してみました何
。それはうまくいった。私は春を走らせることができた。私は直接SqlSessionFactory
を使用していない
問題
、春はありません。 SqlSessionFactory
をプライマリとマークして別のものを書き込むと、それを呼び出すメソッドがないので役に立たない。
したがって、解決手段として、SqlSessionFactory
に異なるデータソースを条件付きで割り当てることを考えました。しかし、どのようにしてランタイムがテストであることがわかりますか?
開始するときにちょうどそのとき、 'application.properties'と'アプリケーションtest.properties'を提供... '--spring.profiles.active = test'で両方のファイルがロードされます。または、短期的にはSpring Profile for this ... –
@ M.Deinum実行時に別のURLを提供するために、彼はそれを必要としません。 – chrylis
あなたはそれを行うことができますが、すべてのプロパティを指定することは一般的には過剰です。たとえば、接続プールのサイズや検証などのデフォルトを設定したい場合があります。 –