Я внедрил аудит с использованием аудита JPA. Мой код выглядит следующим образом:
@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorAware")
public class JpaConfiguration {
@Bean
@Scope(value= ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public AuditorAware<String> auditorAware() {
final String currentUser;
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if(null != authentication) {
currentUser = authentication.getName();
} else {
currentUser = null;
}
return () -> Optional.ofNullable(currentUser);
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что если я войду в систему с одним пользователем и выполню какую-либо операцию, она работает нормально. Но когда я выхожу и захожу с другим пользователем, он все еще использует только последнего пользователя.
После отладки кода я обнаружил, что Spring не создает bean-компонент AuditorAware для каждого пользователя. Он ведет себя как синглтон. Даже я указываю область действия как прототип, но он ведет себя как синглтон.