Saya mencoba menyiapkan kacang cakupan permintaan di Spring.
Saya telah berhasil mengaturnya sehingga kacang dibuat satu kali per permintaan. Sekarang, ia perlu mengakses objek HttpServletRequest.
Karena kacang dibuat sekali per permintaan, saya membayangkan wadah dapat dengan mudah menyuntikkan objek permintaan ke kacang saya. Bagaimana saya bisa melakukan itu?
Musim semi memperlihatkan
HttpServletRequest
objek saat ini (sertaHttpSession
objek saat ini ) melalui tipe objek pembungkusServletRequestAttributes
. Objek pembungkus ini terikat ke ThreadLocal dan diperoleh dengan memanggilstatic
metodeRequestContextHolder.currentRequestAttributes()
.ServletRequestAttributes
menyediakan metodegetRequest()
untuk mendapatkan permintaan saat ini,getSession()
untuk mendapatkan sesi saat ini, dan metode lain untuk mendapatkan atribut yang disimpan di kedua cakupan. Kode berikut, meskipun agak jelek, akan membuat Anda mendapatkan objek permintaan saat ini di mana saja dalam aplikasi:Perhatikan bahwa
RequestContextHolder.currentRequestAttributes()
metode mengembalikan antarmuka dan perlu diketik untukServletRequestAttributes
mengimplementasikan antarmuka.Spring Javadoc: RequestContextHolder | ServletRequestAttributes
sumber
Seperti yang disarankan di sini, Anda juga dapat memasukkan
HttpServletRequest
parameter sebagai metode, misalnya:sumber