Delegating RequestContextHolder like SecurityContextHolder in org.springframework.security.concurrent and org.springframework.security.task .
Using RequestContextHolder in other threads:
@Bean("asyncTaskExecutorWithRequestContext")
public AsyncTaskExecutor asyncTaskExecutorWithRequestContext() {
SimpleAsyncTaskExecutor executor = new SimpleAsyncTaskExecutor("withRequestContext-");
return new DelegatingRequestContextAsyncTaskExecutor(executor);
}
@Async("asyncTaskExecutorWithRequestContext")
public void runAsync() {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
assert attributes != null;
}
See full code in demo.
implementation 'ru.spb.devclub:delegating-spring-request-context:1.0'
<dependency>
<groupId>ru.spb.devclub</groupId>
<artifactId>delegating-spring-request-context</artifactId>
<version>1.0</version>
</dependency>
This project is licensed under MIT License.