1、注解注入分析
首先确定,我們為什麼需要使用 @Autowired 注解?@Autowired 是一個注釋,它可以對類成員變量、方法及構造函數進行标注,讓 spring 完成 bean 自動裝配的工作。對 Spring Bean 這塊不熟悉的,可以看【Spring 源碼分析】這個系列的文章
@RequiredArgsConstructor 是 lombok 提供的注解,作用于類,用于生成包含 final 和 @NonNull 注解的成員變量的構造方法。那麼也就是說,我們需要在注入的屬性上增加 final 或 @NonNull 修飾就可以了
Spring 中三種注入方式、
第一種:Field Injection:屬性注入,這種注入方式通過 Java 的反射機制實作,是以 private 的成員也可以被注入具體的對象
第二種:Constructor Injection 構造注入,通過對象建構的時候建立關系,是以這種方式對對象建立的順序會有要求,當然 Spring 會為你搞定這樣的先後順序,除非你出現循環依賴,然後就會抛出異常
第三種:Setter Injection set 注入,通過調用成員變量的 set 方法來注入想要使用的依賴對象
2、執行個體分析
項目中的@Autowired 注解,有黃色提示,根據提示修改代碼之後,
滑鼠放上去看到提示使用構造方法注入
有兩種形式,第一種,直接建立空構造,實際上是将屬性修改為 final。第二種,每個屬性的注入都在構造方法上增加一個參數,如下
第二種代碼太臃腫了,并且很繁瑣,是以這裡我們使用第一種方式,final 構造,于是代碼變成了以下格式
大量使用@RequiredArgsConstructor(onConstructor_ = @Autowired)
後發現啟動時間明顯快了一半多,
沒有使用這個注解前,啟動時間如圖
使用@RequiredArgsConstructor(onConstructor_ = @Autowired)後