パフォーマンス上の理由から、コンポーネントスキャンから明示的にBeanを宣言することに切り替えています。したがって、基本的には、リポジトリをスキャンするときに@EnableJpaRepositories
を削除したいと考えています。コンポーネントスキャンを使用しないSpringデータJPAリポジトリの設定方法
私のリポジトリは、JpaRepository
を拡張する標準インタフェースです。私はどのように私のリポジトリを宣言できますか?
パフォーマンス上の理由から、コンポーネントスキャンから明示的にBeanを宣言することに切り替えています。したがって、基本的には、リポジトリをスキャンするときに@EnableJpaRepositories
を削除したいと考えています。コンポーネントスキャンを使用しないSpringデータJPAリポジトリの設定方法
私のリポジトリは、JpaRepository
を拡張する標準インタフェースです。私はどのように私のリポジトリを宣言できますか?
は手動JpaRepositoryFactoryBean
を宣言することによって、個々のリポジトリインスタンスを作成することができます。
@Configuration
class Config {
@Bean
public JpaRepositoryFactoryBean userRepository() {
JpaRepositoryFactoryBean factory = new JpaRepositoryFactoryBean();
factory.setRepositoryInterface(UserRepository.class);
return factory;
}
}
これは、春には、工場からのリポジトリのプロキシを取得するgetObject()
を呼び出して、潜在的顧客にそれを注入するようになります。
しかし、私は、まったく間違って構成されていないと、リポジトリをスキャンするオーバーヘッドは無視できると主張します。初期化時と比較してEntityManagerFactory
がかかります。あなたが唯一の具体的なリポジトリBeanを設定したい場合は
あなたが直接このようにそれを作成するために工場を使用することができます。
おかげオリバーを! –
コンポーネントスキャンは、アプリインスタンスが何らかの時間の経過後に「ウォームアップ」(基本的に完全再デプロイ)する必要がある、いくつかのクラウドランタイム(つまりGoogle App Engine)でパフォーマンスが低下する可能性があります。あなたのソリューションは、あなたが期待していたよりも役に立つかもしれない、ありがとう! –
@Oliver Gierkeこれはすべていいですが、小さな問題が1つあります。私のアプリケーションはマルチテナントなので、私は上記のようにJpaRepositoryFactoryBeanを作成することはできません。それを怠け者にする方法はありますか? JpaRepositoryFactoryBeanもuserRepositoryに添付されていますが、これに対して複数のファクトリBeanを作成するにはどうすればいいですか? –