gpt4 book ai didi

spring - @Autowired HttpServletRequest 与作为参数传递 - 最佳实践

转载 作者:行者123 更新时间:2023-12-04 03:19:05 25 4
gpt4 key购买 nike

假设我们定义了一个具有 @Controller 的 Controller 类。仅注解。

在类中,我们定义了 private @Autowired HttpServletRequest request;多变的。

Spring Controller 是单例的。当我们定义 HttpServletRequest@Autowired在网络应用程序中,这会是一个问题吗?

我从一个网站上读到,即使它是 @Autowired它只是为线程变量注入(inject)一个代理。

这是真的吗?在多线程环境中我们可以使用@Autowired吗?或通过 HttpServletRequest作为 Controller 类中每个方法的参数是正确的方法吗?

一些网站说这是一个问题并建议作为参数传递,而很少有人说这将是一个问题。

我不明白哪一个是对的。

最佳答案

两者都可以。@Autowired HttpServletRequest和作为参数传递是一样的。

通过前HttpServletRequest调用响应 @RequestMapping 的方法函数,Spring 存储 HttpServletRequest变成 ThreadLocal类型变量。

ThreadLocal variable 是一个线程安全的映射,它保存 HttpServletRequest在当前线程上下文中。 @Autowired HttpServletRequest代理 bean 从 ThreadLocal 获得正确的请求多变的。

关于spring - @Autowired HttpServletRequest 与作为参数传递 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48574780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com