gpt4 book ai didi

java - 在处理多个请求的类中使用类级别变量

转载 作者:行者123 更新时间:2023-11-30 08:19:01 25 4
gpt4 key购买 nike

我有一个如下编写的类,其方法doSomethingForMe()是从servlet调用的。 servlet 可以对同一方法发出多个请求。Servlet 从 Spring 获取对象。因为这个类是由 Spring Bean 工厂初始化的。

public class ClassLevelVariableTest
{
private List<String> errorLists;

public void doSomethingForMe()
{
errorLists = new ArrayList<>();
// plus do the rest functionality
if (!errorLists.isEmpty())
{
prepareErrorList(errorLists);
}
}

private void prepareErrorList(List<String> errorLists)
{
for (String errorString : errorLists)
{
System.out.println(errorString);
}
}
}

所以我的第一个查询是:在后续请求中是否有机会获得 errorLists 变量的相同对象?

是否有机会让第二个请求覆盖该变量?

最佳答案

如果您的 bean 是为每个请求实例化的,那么不会,没问题。如果 Spring 为每个请求注入(inject)一个重用的单个注入(inject),那么就会遇到问题。您可以通过不将 errorLists 存储为实例变量来轻松解决此问题。将您的代码更改为:

public class ClassLevelVariableTest
{

public void doSomethingForMe()
{
List<String> errorLists = new ArrayList<>();

您似乎没有使用 errorLists 作为实例变量,所以应该没问题。

关于java - 在处理多个请求的类中使用类级别变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232151/

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