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)造