關(guān)于BeanUtils.copyProperties() 方法的問(wèn)題
BeanUtils.copyProperties(obj1,obj2)這個(gè)方法難道不是將obj2的值賦給obj1嗎,而老師說(shuō)最開(kāi)始加載resource的時(shí)候?qū)傩灾稻蜁?huì)一一對(duì)應(yīng)賦值,而Resource bean = new Resource()中的bean是new出來(lái),應(yīng)該沒(méi)有值,按照老師代碼中的順序BeanUtils.copyProperties(resource,bean)這不是把bean的值賦給resource嗎,那bean中依舊是沒(méi)有值的哇?沒(méi)明白這個(gè)問(wèn)題。
2018-11-21
這個(gè)我看視頻的時(shí)候也想到了,然后測(cè)試了一下,直接讓return resource;的話會(huì)出現(xiàn)錯(cuò)誤的,不會(huì)正確顯示的。你把它toString輸出一下,可以看到自動(dòng)裝配后的resource是一個(gè)完整類名加后面一串類似這樣的東西“$$EnhancerBySpringCGLIB$$9a1fe978@5eef9e0”,這說(shuō)明它是spring給你生成的一個(gè)原來(lái)類的動(dòng)態(tài)代理。這個(gè)動(dòng)態(tài)代理是不能通過(guò)json顯示出來(lái)的。
2018-08-22
這個(gè)自己測(cè)試下就知道了。第一次通過(guò)資源文件映射的bean不是標(biāo)準(zhǔn)的Resource類的,帶有其他的屬性,這時(shí)候直接返回的話jackson無(wú)法轉(zhuǎn)換,會(huì)報(bào)錯(cuò)。所以我們可以看到通過(guò)BeanUtils.copyProperties來(lái)獲取標(biāo)準(zhǔn)的Resource類的bean,這時(shí)候就可以進(jìn)行json轉(zhuǎn)換了。
2018-08-12
resource是交給Spring創(chuàng)建的單實(shí)例對(duì)象,在項(xiàng)目啟動(dòng)時(shí)Spring就會(huì)按照注解配置給該對(duì)象賦值。而new出來(lái)的bean對(duì)象,雖然與resource使用的同樣的class對(duì)象,但卻是不同的加載方式,不會(huì)有初始值。
2018-07-21
你可能有些問(wèn)題沒(méi)想明白,我簡(jiǎn)單說(shuō)下問(wèn)題的關(guān)鍵。
首先,老師是創(chuàng)建了資源配置文件,并設(shè)置了幾個(gè)屬性值,如下圖:
然后在Resource類中通過(guò)注解的方式為每個(gè)成員變量都讀取設(shè)置了上面資源配置文件里的屬性值,如下圖:
這樣簡(jiǎn)單來(lái)說(shuō),Resource類中定義的成員變量其實(shí)都是有值的,效果如下圖:
認(rèn)真對(duì)比上面兩張圖,應(yīng)該明白了吧,在你new出Resource對(duì)象時(shí),其實(shí)該對(duì)象的每個(gè)屬性都是有值的。上面的我個(gè)人的淺顯理解,可能敘述不太準(zhǔn)確,目前,我也在積極學(xué)習(xí)中,正好看到你的問(wèn)題,希望可以幫到你,。