Ao usar o Spring Security, qual é a maneira correta de obter informações atuais de nome de usuário (por exemplo, SecurityContext) em um bean?

Eu tenho um aplicativo da Web Spring MVC que usa o Spring Security. Quero saber o nome de usuário do usuário conectado no momento. Estou usando o snippet de código fornecido abaixo. Essa é a maneira aceita?

Não gosto de chamar um método estático dentro deste controlador - que derrota todo o propósito do Spring, IMHO. Existe uma maneira de configurar o aplicativo para injetar o SecurityContext atual ou a autenticação atual?

  @RequestMapping(method = RequestMethod.GET)
  public ModelAndView showResults(final HttpServletRequest request...) {
    final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
    ...
  }

questionAnswers(17)

yourAnswerToTheQuestion