2017-01-16 8 views
1

Springが初期化されている間に、データベース接続が開始された後で、@RestControllerエンドポイントが開始される(要求の送信が可能になる)前に、エンドポイントを開始する前にSpringを実行するメソッド

RESTエンドポイントが準備される前に、データベースリクエスト(JpaRepositoryを使用)を送信する必要があります。

私は類似のポストを見つけようとしましたが、私はできませんでした。注釈@PostConstructまたはインタフェースCommandLineRunnerApplicationListener<ContextRefreshedEvent>が見つかりましたが、私はすべてのエンドポイントが開始された後に呼び出されると思いますか?または私は間違っていますか?

+0

私たちに説明してください何を問題(何をする必要がありますか)を解決する必要があります –

答えて

1

@PostConstructは、Beanが完全に構築された後で、ただし、コントローラの場合は要求の処理を開始する前に、「put into service」される前に呼び出されます。 (サービスBeanの場合、これは他のBeanに接続する前に意味します)

Beanに依存関係を提供するためにはコンストラクタインジェクションを使用することをお勧めしますが、データベース実際のコンストラクタで重い操作を避けるために@PostConstructのクエリ

+0

ありがとう、私が理解するように\ @PostConstructで注釈付きのメソッドで\ @Autowiredフィールドを使用できますか? – user3626048

+1

はい、ただし、依存関係を隠したり、テストを難しくしたり、あいまいなエラーにつなげたりする可能性があるので、可能な限りフィールドのオートワイヤリングを避けるのが最善です。実用的であれば、コンストラクタをオートワイヤーする方がよいでしょう。 – chrylis

関連する問題