HttpServletRequest i wstrzykiwanie do kodu

0

Cześć,

Czy jeśli wstrzyknę sobie np. do jakiegoś @Service'u w Springu HttpServletRequest w taki np. sposób:

private @Autowired HttpServletRequest request;

I w jakiejś metodzie wykorzystuje ten obiekt to czy mogę być pewny, że wywołanie tego kodu zostało wywołane właśnie przez ten request? Tam przecież może być wiele requestów obsługiwanych przez różne wątki? Za bardzo nie mogę uchwycić koncepcji w jaki sposób Spring to robi. Zakładam, że @Service ma domyślny scope (singleton)

1

Hmm po pierwsze, w serwisach nie powinieneś obsługiwać requesta. Z requestu korzystasz w kontrolerach, jako argument.

0

Jeśli korzystac w Logice biznesowej z HttpRequestów to znaczy że gwałcisz SRP :D

0

Nie rób tego w Service i nie wstrzykuj tak. Żeby to działało Spring zakłada proxy i obsłuży Ci to nawet w @Service i Singletonie stosując proxy i ThreadLocal.
Tutaj masz o tym więcej -> https://stackoverflow.com/questions/3320674/spring-how-do-i-inject-an-httpservletrequest-into-a-request-scoped-bean?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Ale nie powinieneś tak robić, bo ten kod nawet trudno będzie Ci się testować. Tam się dzieje magia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1