更新時間:2021-12-10 10:24:10 來源:動力節(jié)點 瀏覽1427次
通常在我們的項目中,有必要使用單例模式,它在整個應(yīng)用程序中只定義一個對象的實例。當(dāng)我們使用 spring 時,可以定義一個單例范圍的 Bean,如下所示。
例如,您可以使用注釋@Service 編寫一個服務(wù)類,然后使用帶有“singleton”參數(shù)的注釋@Scope 將其范圍設(shè)置為單例。
在這個例子中,我將實現(xiàn)一個簡單的循環(huán)算法,返回給定列表的下一個 IP,假設(shè)我想在 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 將其設(shè)置為服務(wù),并使用帶有“singleton”參數(shù)的注釋 @Scope 為其分配一個單例范圍。
現(xiàn)在我們可以將它注入到我們的 Spring-Boot 應(yīng)用程序中
@RestController
@RequestMapping("/auth")
public class PersonController {
@Autowired
RoundRobin rr;
@GetMapping
public void doAuth() {
System.out.println("Next IP: " + rr.nextIP());
}
}
通過上述介紹相信大家對創(chuàng)建Spring單例已經(jīng)有所了解,如果您想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容豐富,通俗易懂,適合沒有基礎(chǔ)的小白學(xué)習(xí),希望對大家能夠有所幫助。