Springのドキュメントによると:
spring.jersey.type = filterを設定することにより、サーブレットの代わりにフィルターを使用することもできます(この場合、置換またはオーバーライドする@BeanはjerseyFilterRegistrationです)。
この質問への回答によると:
特定の条件に基づいてリクエストをフィルタリングおよび/または変更する場合は、フィルタを使用します。リクエストを制御、前処理、後処理する場合は、サーブレットを使用します。
では、JerseyをSpring Bootで使用して、jsonコンテンツを提供し、承認の確認やすべての応答へのヘッダーの追加などのフィルターを適用する場合はどうでしょうか。春のドキュメントには、Jerseyのフィルタまたはサーブレットの役割を選択する必要があるように書かれています。
Spring BootアプリケーションでJerseyの両方を実行できますか?その場合、どのように実行できますか?
では、JerseyをSpring Bootで使用して、jsonコンテンツを提供し、承認の確認やすべての応答へのヘッダーの追加などのフィルターを適用する場合はどうでしょうか。
この質問はあまり意味がありません。
ジャージー自体は処理エンジンです。それはサーブレットコンテナから必要なすべてがあるHttpServeltRequest
とHttpServletResponse
、要求の処理を開始します。これらは、サーブレットFilter
またはサーブレットの両方として取得できますHttpServlet
。また、メインのJerseyサーブレットコンテナコンポーネントServletContainer
を見ると、拡張HttpServlet
と実装の両方が行われていることがわかりますFilter
。
したがって、Jerseyをフィルターまたはサーブレットとして構成できることは、SpringBootに固有のものではありません。ジャージーはこのように設計されています。Spring Bootを使用せずに、Jerseyをフィルターまたはサーブレットとして構成できます。
フィルタシステムに関しては、Jerseyには、サーブレットAPIとは独立した独自のフィルタシステムがあります。ただし、サーブレットフィルタを使用する場合は、Jerseyをフィルタとして構成するかサーブレットとして構成するかに関係なく、使用できない理由はありません。サーブレットのフィルタチェーンを理解していれば、フィルタが次々に呼び出され、次にサーブレットが呼び出されることがわかります。したがって、フィルターを追加して、Jerseyフィルターの前に実行させたい場合は、それを行うことができます。または、Jerseyがサーブレットの場合、フィルタはJerseyサーブレットの前に呼び出されます。いずれにせよ、それは同じ結果です。サーブレットがフィルタである、またはサーブレットであるという理由だけで、Jerseyは処理動作を変更しません。
春のドキュメントには、Jerseyのフィルタまたはサーブレットの役割を選択する必要があるように書かれています
はいサーブレットまたはフィルタ。私が上で述べたことから明らかなはずです。複数のサーブレットフィルタを使用できます。フィルタは次々に発生します。ジャージーとは関係のないフィルターを追加できます。それらはすべて同じServletRequest
とを渡されるServletResponse
ので、それらはすべて同じ要求と応答で相互作用します。ヘッダーを追加するフィルターを作成する場合は、それを実行します。ジャージーについて何も知る必要はありません。
auth / headersなどのJersey固有のフィルター(サーブレットフィルターメカニズムに依存しない)を作成する場合は、フィルターとインターセプターを確認できます(このすばらしい回答で認証の例を確認できます)。
サーブレットフィルタを追加する場合は、SpringBootFilterRegistrationBean
のsを使用して追加できます。
@Bean
public FilterRegistrationBean anotherFilter() {
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加