SpringBoot注解介紹

1、@ComponentScan:

新建SpringBoot項(xiàng)目時(shí) 會(huì)自動(dòng)生成一個(gè)入口類 命名規(guī)則是項(xiàng)目名+Application 該類上面有個(gè)@SpringBootApplication 項(xiàng)目啟動(dòng)時(shí)系統(tǒng)會(huì)自動(dòng)掃描這個(gè)類的同級(jí)以及下級(jí)目錄 將需要的對(duì)象注入到IOC容器 在需要時(shí)通過DI(依賴注入)注入到需要的對(duì)象中 那么問題來了 程序是怎么確定需要掃描哪些包呢 這是因?yàn)樵贎SpringBootApplication中有個(gè)注解 如圖:


通過該注解上的配置 才能準(zhǔn)確定位需要掃描哪些包 。

由此我們可以進(jìn)行延伸 如果我們需要臊面的資源不再該類的同級(jí)或者下級(jí) 我們只需要在項(xiàng)目入口類上配置上@ComponentScan("資源路徑")

就可以將我們需要的外部(其他路徑)資源加載到IOC容器中了

2、@Qualifier("byname") 通過name名 注入

3、@Primary 對(duì)于同一個(gè)類型下有多個(gè)實(shí)現(xiàn) 該注解可以標(biāo)明哪個(gè)實(shí)現(xiàn)類是優(yōu)先被注入的 如圖:




此時(shí)會(huì)優(yōu)先注入帶有@Primary注解的bean 如下圖:

4、@ConditionalOnProperty 該注解可以讀取配置文件 根據(jù)配置文件的值來決定是否將bean注入到容器中

? ? 該注解中的三個(gè)參數(shù):value 值為配置文件中配置項(xiàng)的名字?havingValue為值??matchIfMissing 的值為true和false 時(shí)針對(duì)沒有配置項(xiàng)的情況下時(shí)是否注入

5、

@Getter lombok為實(shí)體類自動(dòng)生成getter方法

@Setter?lombok為實(shí)體類自動(dòng)生成setter方法

@AllArgsConstructor??lombok為實(shí)體類自動(dòng)生成全參數(shù)構(gòu)造方法

@NoArgsConstructor??lombok為實(shí)體類自動(dòng)生成無參數(shù)構(gòu)造方法

@RequiredArgsConstructor?lombok為實(shí)體類自動(dòng)生成成員變量非空的參數(shù)構(gòu)造方法

@NonNull lombok為實(shí)體類指定參數(shù)非空

實(shí)體類.builder().name("muse").age(18).build()可以替換之前的setter方法賦值 不過需要在實(shí)體類上增加@Builder注解

但是一旦使用@Builder 就無法通過構(gòu)造方法去實(shí)例化bean 因?yàn)锧Builder會(huì)生成一個(gè)私有的構(gòu)造方法 如果想使用構(gòu)造方法實(shí)例化 可以配合使用NoArgsConstructor? 或者手動(dòng)新增一個(gè)無參構(gòu)造

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容