[英]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的一個實例。 通過將它們自己的HttpServletRequest
和HttpServletResponse
對象傳遞給上述方法,所有請求線程都將訪問該單個servlet實例的(doGet(...) or doPost(...))
方法,並且不會導致請求/響應混淆曾經。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.