Cuando se usa Spring Security, ¿cuál es la forma correcta de obtener información de nombre de usuario actual (es decir, SecurityContext) en un bean?

Tengo una aplicación web Spring MVC que usa Spring Security. Quiero saber el nombre de usuario del usuario actualmente conectado. Estoy usando el fragmento de código que figura a continuación. ¿Es esta la forma aceptada?

No me gusta tener una llamada a un método estático dentro de este controlador, que anula todo el propósito de Spring, en mi humilde opinión. ¿Hay alguna forma de configurar la aplicación para que se inyecte el SecurityContext actual o la Autenticación actual?

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

Respuestas a la pregunta(17)

Su respuesta a la pregunta