簡體   English   中英

春豆的並發訪問安全

[英]Concurrent Access Safety at Spring Beans

我有當前方法:

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();        
}

我想將其放在Spring @Service類中。 然后我想將該類用作@Autowired 我知道Spring bean是單例的,因此我的autowired類只有一個實例。 我有使用該服務的不同@Controller類。 就我而言,並發訪問是否會引起問題? 例如,覆蓋另一個請求的路徑?

就我而言,並發訪問是否會引起問題?

盡管它是單例,但是tt不會引起任何並發問題,因為方法getStatusCode僅使用

  • 作為參數傳遞給方法的對象(例如:字符串路徑)
  • 在方法中使用創建的對象。

例如,覆蓋另一個請求的路徑?

這不是問題,因為每個方法調用都將來自不同的線程,並且方法的參數(如路徑變量)存儲在堆棧中,每個線程都不同。

作為一個實時示例,我們來看一下Servlet。 不管請求的數量如何,Servlet容器僅創建Servlet的一個實例。 通過將它們自己的HttpServletRequestHttpServletResponse對象傳遞給上述方法,所有請求線程都將訪問該單個servlet實例的(doGet(...) or doPost(...))方法,並且不會導致請求/響應混淆曾經。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM