Как внедрить HttpServletRequest в запрос Spring AOP (пользовательский сценарий)?
Я знаю стандартный способ написания рекомендаций AOP относительно метода контроллера и что вы можете получить доступ к аргументу HttpServletRequest, если он объявлен в методе контроллера.
Но мой сценарий заключается в том, что у меня есть служба перевода, которая в настоящее время поддерживает сессию,S локаль для перевода. Я чувствую, что это делает службу с состоянием, а также я не хочу, чтобы она была ограничена сессией, так как я думаю, что это действительно Singleton. Но есть несколько мест, где вызываются методы службы перевода, и поэтому я не хочу менять подпись, чтобы добавить запрос / локаль в эти методы. Проблема в том, что все абоненты службы перевода "Методы не имеют доступа к HttpServletRequest (не методы контроллера)? Могу ли я написать аспект вокруг методов службы перевода и каким-то волшебным образом получить доступ к HttpServletRequest независимо от того, доступен ли он в вызывающейконтекст или нет?
@Service
public class TranslationService {
public void translate(String key) {
...
}
}
@Aspect
@Component
public class LocaleFinder {
@PointCut("execution(* TranslationService.translate(..))")
private void fetchLocale() {}
@Around("fetchLocale()") // in parameter list
public void advice(JoinPoint joinpoint, HttpServletRequest request) { .... }
}
Если теперь вызывающая сторона translate не имеет HttpServletRequest, может 'я получаю запрос в совете? Есть ли обходной путь?