更新時間:2021-12-10 10:24:10 來源:動力節點 瀏覽1168次
通常在我們的項目中,有必要使用單例模式,它在整個應用程序中只定義一個對象的實例。當我們使用 spring 時,可以定義一個單例范圍的 Bean,如下所示。
例如,您可以使用注釋@Service 編寫一個服務類,然后使用帶有“singleton”參數的注釋@Scope 將其范圍設置為單例。
在這個例子中,我將實現一個簡單的循環算法,返回給定列表的下一個 IP,假設我想在 3 個 IP 之間建立一個平衡器。
@Service
@Scope("singleton")
public class RoundRobin {
String[] ips = {"192.168.0.1", "192.168.0.2", "192.168.0.3"};
int currentIndex = 0;
public String nextIP() {
String ip = ips[currentIndex];
if(currentIndex < (ips.length -1)) {
currentIndex++;
} else {
currentIndex = 0;
}
return ip;
}
}
在這種情況下,我們在這個 Bean 中使用兩個 Spring 注釋,@Service 將其設置為服務,并使用帶有“singleton”參數的注釋 @Scope 為其分配一個單例范圍。
現在我們可以將它注入到我們的 Spring-Boot 應用程序中
@RestController
@RequestMapping("/auth")
public class PersonController {
@Autowired
RoundRobin rr;
@GetMapping
public void doAuth() {
System.out.println("Next IP: " + rr.nextIP());
}
}
通過上述介紹相信大家對創建Spring單例已經有所了解,如果您想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容豐富,通俗易懂,適合沒有基礎的小白學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習