javascript
【闲谈】论Spring的三种依赖注入方式
知識(shí)點(diǎn)科普:
????????IOC和DI:IOC是控制反轉(zhuǎn),DI是依賴注入。DI是行為,而IOC是實(shí)現(xiàn)這一行為的容器。
????????循環(huán)依賴:指類與類之間互相依賴的情況,比如有類A和類B,類A中依賴類B,類B中依賴類A,由此導(dǎo)致項(xiàng)目啟動(dòng)的時(shí)候,不能正常加載類的情況。
正文
Spring提供了三種依賴注入的方法,分別是:
1、屬性注入,即通過(guò)@Autowired注解注入依賴
@Autowired private UserDao userDao;2、setter注入
private UserDao userDao;@Autowired public void setUserDao(UserDao userDao){this.userDao = userDao; }3、構(gòu)造器注入
private final UserDao userDao;public UserController(UserDao userDao){this.userDao = userDao; }這三種依賴注入的優(yōu)缺點(diǎn)分別如下:
優(yōu)點(diǎn):
1、屬性注入,能夠有效提高代碼簡(jiǎn)潔性,讓依賴注入的事情交給IOC容器,省時(shí)省力。
2、setter注入,能夠通過(guò)懶加載的方式解決循環(huán)依賴,類中的依賴在需要用到的時(shí)候才會(huì)注入。另外,setter注入方式很靈活,注入的對(duì)象還能改變。
3、構(gòu)造器注入,相比以上兩種注入方式更加可靠,類中的所有依賴在實(shí)例化的時(shí)候都會(huì)注入,并且能夠使用final修飾,保證了依賴不為空不可變。另外,構(gòu)造器注入能夠自動(dòng)檢測(cè)循環(huán)依賴的存在,便于優(yōu)化項(xiàng)目結(jié)構(gòu)。
缺點(diǎn):
1、屬性注入,根據(jù)這種方式注入依賴的類過(guò)于依賴IOC容器,一旦脫離容器就無(wú)法實(shí)例化。換而言之,不能通過(guò)new方式創(chuàng)建該類的實(shí)例,因?yàn)樵擃愔械囊蕾囆枰狪OC來(lái)注入。
2、setter注入,這是三種注入方式中最靈活的,這個(gè)靈活就是它的缺點(diǎn)。setter注入的依賴不能保證依賴不可變。
3、構(gòu)造器注入,假如類中需要注入的依賴比較多,就會(huì)顯得構(gòu)造方法很臃腫,缺乏可讀性。另外,構(gòu)造器注入不能解決循環(huán)依賴問(wèn)題。
總結(jié):
最不推薦使用的是屬性注入,除了省力以外沒(méi)有好處。
setter注入和構(gòu)造器注入各有優(yōu)劣,需要根據(jù)實(shí)際情況選擇。需要保證注入依賴的可靠性就用構(gòu)造器注入,需要保留注入依賴的靈活性就用setter注入。
總結(jié)
以上是生活随笔為你收集整理的【闲谈】论Spring的三种依赖注入方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eclipse查看、修改tomcat端口
- 下一篇: java同学录_JSP同学录(jsp+j