延遲初始化對象
@Lazy註解用於延遲初始化對象。
@Lazy註解的主要作用包括:
延遲載入Bean。即在需要使用該Bean時才進行實例化。
解決循環依賴問題。在Spring中,如果兩個Bean之間存在循環依賴,默認情況下Spring容器會在啟動時就嘗試實例化所有的Bean,這時會拋出BeanCurrentlyInCreationException異常。使用@Lazy註解可以避免這種情況。
減少Spring容器的啟動時間,提高應用程式的性能。因為在使用@Lazy註解的情況下,只有在需要使用該Bean時才會進行實例化,而不是在Spring容器啟動時就實例化所有的Bean。
可以作用在類級別或方法級別上。在類級別上使用@Lazy註解,表示該類被延遲載入。在方法級別上使用@Lazy註解,表示僅該方法返回的對象被延遲載入。
可以作用在@Autowired和@Inject注釋的屬性上,在這種情況下,它將為該欄位創建一個惰性代理,作為使用ObjectFactory或Provider的默認方法。