在 class 中使用 class 级别变量来处理多个请求

using class level variable in class which handle multiple request

我有一个 class 如下所示,其中的方法 doSomethingForMe() 从 servlet 调用。 servlet 可以对同一方法发出多个请求。 Servlet 从 Spring 获取对象。因为这个 class 正在被 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 为每个请求注入一个重复使用的,那么你就有问题了。您可以通过不将 errorLists 存储为实例变量来轻松解决此问题。将您的代码更改为:

public class ClassLevelVariableTest
{

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

您似乎没有将 errorLists 用作实例变量,因此应该没问题。