Java spring的三種注入方式詳解流程
設(shè)置Spring的作用域
或者使用枚舉值設(shè)置
單例和多里使用場景
自動注入
@Primary
一個接口有多個實現(xiàn)被spring管理嗎,在依賴注入式,spring會不知道注入哪個實現(xiàn)類就會拋出NoUniqueBeanDefinitionException異常
使用@Primary 來告訴Spring 注入哪個實現(xiàn)類
Qualifier
@ComponentScan不同的配置對性能的影響
優(yōu)化bean配置對spring應(yīng)用程序的性能影響
在Spring中我們可以通過設(shè)置哦組件的掃描范圍來簡化javaBean的注入過程
在需要大規(guī)模對象注入的場景下使用@ComponentScan注解來指定包掃描分為,當然指定包路徑中的類需要加@Component注解讓Spring創(chuàng)建管理。
懶加載
spring默認使用預(yù)加載,及在Spring項目啟動時創(chuàng)建bean
懶加載:在spring項目啟動不去創(chuàng)建bean, 在使用時創(chuàng)建
三種注入方式
字段注入(IDEA 會提示不推薦)
字段注入的缺點:
- 字段注入的bean類外部不可見
- 循環(huán)依賴問題
- 無法設(shè)置需要注入的對象為final, 也無法注入那些不可變的對象
字段注入的bean類外部不可見
使用字段注入最大的問題就是配注入類(HealthRecorSercice)的外部可見性,及HealthRecorSercice只能在ClientService 類中被訪問,脫離的容器環(huán)境就無法被訪問,就導(dǎo)致類和容器的耦合度太高,無法脫離容器使用目標對象。
在外部類new 一個ClientService 調(diào)用包含了字段注入bean的方法,就會拋出 HealthRecorSercice類空指針異常
循環(huán)依賴問題
如下A和B發(fā)生了循環(huán)依賴,但是種在Spring中是合法的編譯啟動Sring類時并不會拋出以異常,只有在使用到A或者B時才會報錯
被字段注入的對象是在,需要注入他類的實例化之前被實例化好。
構(gòu)造器注入(官方推薦)
構(gòu)造器注入就是通過類的構(gòu)造函數(shù)注入
構(gòu)造器注入可以解決:
- 類外部不可見
- 無法設(shè)置需要注入的對象為final, 也無法注入那些不可變的對象
不能解決:循環(huán)依賴問題
代碼可讀性不高
使用構(gòu)造器注入出現(xiàn)了循環(huán)依賴嗎,在Spring項目啟動時就會拋出循環(huán)依賴異常
set方法注入
set注入可以解決:
- 類外部不可見
- 循環(huán)依賴問題
- 無法設(shè)置需要注入的對象為final, 也無法注入那些不可變的對象
到此這篇關(guān)于Java spring的三種注入方式詳解流程的文章就介紹到這了,更多相關(guān)Java spring注入方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot和Vue3的博客平臺文章詳情與評論功能實現(xiàn)
在前面的教程中,我們已經(jīng)實現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能以及文章列表與分頁功能。本教程將引導(dǎo)您實現(xiàn)博客平臺的文章詳情與評論功能,需要的朋友可以參考一下2023-04-04Elasticsearch QueryBuilder簡單查詢實現(xiàn)解析
這篇文章主要介紹了Elasticsearch QueryBuilder簡單查詢實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08