Jersey+SpringFrameworkでRESTFulAPIを実装していて、以下の情報が必要になりました。
- HttpServletRequest
- HttpServletResponse
その方法を調べたので覚え書き。
環境など
ツールなど | バージョンなど |
---|---|
MacbookPro | macOS Mojave 10.14.5 |
IntelliJ IDEA | Ultimate 2019.3.3 |
Java | AdoptOpenJDK 11 |
apache maven | 3.6.3 |
Jersey | 2.30.1 |
JUnit | 5.6.0 |
Tomcat | apache-tomcat-8.5.51 |
Postman | 7.19.1 |
Spring Framework | 5.2.4-RELEASE |
取得方法
@Context
をつけてメンバー変数に宣言するだけ。
@Service
@Path("/my")
class MyResourceApi{
@Context
HttpServletRequest httpServletRequest;
@Context
HttpServletResponse httpServletResponse;
}
これ以外のコンテキスト関係の情報は、どれも同じようにして取得可能かと思われます。
もうちょっと詳しく
これは、Jerseyのそのものの機能というより、Jerseyがversion2から組み込んでいるHK2というアノテーションベースでのDI機能のおかげのようです。
詳しくはこちらで。
HK2
https://javaee.github.io/hk2/introduction.html
Jersey2に組み込まれてるDI機能(HK2)を試す
https://qiita.com/opengl-8080/items/9bdc98aa5269512bd70e