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

时间:2015-03-24 12:01:32

标签: java multithreading servlets

我有一个如下所示的类,方法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变量的相同对象?

是否有可能通过第二次请求覆盖变量?

1 个答案:

答案 0 :(得分:1)

如果你的bean被实例化为每个请求然后没有,你没事。如果Spring为每个请求注入一个重用的那个,那么你就遇到了问题。您可以通过不将errorLists存储为实例变量来轻松解决此问题。将您的代码更改为:

public class ClassLevelVariableTest
{

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

您似乎并未将错误列表用作实例变量,因此您应该没问题。