Spring中為什么實(shí)體類不用注入(參考User,UserService)
要理解為什么不用注入,首先就清楚注入的目的是什么?如果不注入,在程序中要使用某個(gè)類對(duì)象的方法,則需要去new一個(gè)對(duì)象。然后我們調(diào)用其中的方法,眾所周知“程序=算法+數(shù)據(jù)”。不失一般性,在面向?qū)ο箝_發(fā)中,類一般有兩種,一種是功能類的,主要是完成一些業(yè)務(wù)操作。一種是數(shù)據(jù)類,主要是存儲(chǔ)數(shù)據(jù),比如POJO。我們數(shù)據(jù)提交上來后,自己組裝PO(當(dāng)然也有的框架可以幫我們組裝好),然后調(diào)用功能類的方法去操作這些數(shù)據(jù),完成相應(yīng)功能。如果沒有使用注入的方式注入這些功能類對(duì)象,則會(huì)有空指針的問題。
UserService是個(gè)工具類,你需要獲取(也就是new)他的對(duì)象實(shí)例才能調(diào)用類內(nèi)部的方法。
而User只是個(gè)POJO,是個(gè)存放數(shù)據(jù)的載體,并不需要獲取(也就是new)他的對(duì)象實(shí)例,而是從外面?zhèn)鬟M(jìn)來的。
所以UserService需要new一個(gè),而User并不需。
而Spring的注入機(jī)制其實(shí)就是代替了new的這個(gè)過程(稱為解耦),所以UserService需要注入,而User并不需要注入。
spring 管理的類都是單例吧,spring 管理model那不是所有的用戶共用一個(gè)User對(duì)象,登陸的時(shí)候存儲(chǔ)誰的呢?