2016-09-19 49 views
0

我当前的方法:并发访问安全

private int getStatusCode(String path) throws IOException { 
    HttpClient client = HttpClients.createDefault(); 
    HttpGet method = new HttpGet(path); 
    HttpResponse httpResponse = client.execute(method); 
    return httpResponse.getStatusLine().getStatusCode();   
} 

我希望把它放在一个春天@Service类。然后我想使用该类作为@Autowired。我知道Spring bean是单身人士,所以我只有一个自动装配类的实例。我有不同的@Controller类使用该服务。在我的情况下并发访问是否会造成问题?例如从另一个请求覆盖路径?

回答

0

在我的情况下并发访问是否会造成问题?

虽然这是一个单身,TT不会造成任何并发问题,因为该方法getStatusCode只使用传递给方法的参数

  • 对象(例如:字符串路径)
  • 在方法中创建的对象。

例如从另一个请求覆盖路径?

不是问题,因为每个方法调用将来自不同的线程,并且方法的参数(如路径变量)存储在堆栈中,而每个线程都是不同的。

作为一个实时的例子,我们看看Servlet。无论请求数量多少,Servlet容器都只创建一个servlet实例。所有的请求线程都通过将自己的HttpServletRequestHttpServletResponse对象传递给上述方法来访问这个servlet实例的方法(doGet(...) or doPost(...)),并且它不会导致混淆请求/响应。