Anh*_*uan 0 spring controller filter threadscope
我必须获取请求 Http Header 的语言并将其存储在线程上下文中RestController,服务可以通过使用SimpleThreadScope. 但是我发现,@RestController无法获取存储的对象,我将创建一个新实例。我查了一下,从@RestController到没问题@service。但是不能将对象从 Filter 传输到@RestController具有由SimpleThreadScope.
为什么 Scope 实现的 ScopeSimpleThreadScope不能从 Filter( GenericFilterBean)转移到 Controller( @RestController)。
如果您需要能够从过滤器更新 bean 的状态,然后能够读取@RestControlleror 中的值,然后@Service使用SimpleThreadScope
你需要注册 SimpleThreadScope
@Bean
public static BeanFactoryPostProcessor beanFactoryPostProcessor() {
return new BeanFactoryPostProcessor() {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
logger.info("postprocessor");
beanFactory.registerScope("thread", new SimpleThreadScope());
}
};
}
Run Code Online (Sandbox Code Playgroud)你应该用 @Scope("thread") 注释你的 bean
@Component
@Scope(scopeName = "thread", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyBean {
@RestController
public class SampleController {
private static final Logger logger = LoggerFactory.getLogger(SampleController.class);
@Autowired
private MyBean myBean;
@GetMapping("/test/{somePathVar}")
public String test(@PathVariable String somePathVar) throws InterruptedException, ExecutionException {
logger.info("looking for bean data: {}", myBean.getData());
Run Code Online (Sandbox Code Playgroud)在过滤器中注入 bean 并更新它的状态
@Component
public class MyFilter extends GenericFilterBean {
private static final Logger logger = LoggerFactory.getLogger(MyFilter.class);
@Autowired
private MyBean myBean;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
myBean.setData(servletRequest.getParameter("test"));
filterChain.doFilter(servletRequest, servletResponse);
}
}
Run Code Online (Sandbox Code Playgroud)这是一篇描述 spring 作用域的有用文章:http : //www.baeldung.com/spring-bean-scopes。您可以在那里找到有关 proxyMode 的详细信息。
你可以看到这@RequestScope可能对你有用。
也可能拦截器会为您的任务工作。看这篇文章的例子http://www.baeldung.com/spring-http-logging
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |