mapstruct 框架的一些高階用法

2021-10-22 23:09:02 字數 1696 閱讀 2253

@data

class

a@data

class

b

// b物件集合轉換成a物件集合

list

blisttoalist

(list

blist)

;

如上**,是將b集合轉換成a集合,實際編譯完成的**如下,這裡可能疑惑,我們沒有宣告單個物件的轉換,它怎麼編譯後有此物件呢,這就是因為編譯時對**進行的增強,通過反射增加了單個物件的轉換。但也不是每次都會自動生成,它會先遍歷整個物件的方法,通過形參和返回值確定是否已經存在了所需要的單個物件轉換方法。如果存在了就直接使用了。

public a btoa

(b b)

else

}public list

blisttoalist

(list

blist)

else

return list;

}}

如果我們自定義了屬性對應關係

// b物件轉換成a物件()

a btoa

(b b)

;// b物件集合轉換成a物件集合

list

blisttoalist

(list

blist)

;

則編譯後的**如下:我們發現,它使用了我們自定義好的轉換規則

public a btoa

(b b)

else

}public list

blisttoalist

(list

blist)

else

return list;

}}

如果我們寫了兩個方法,這兩個方法名不一樣,但是形參和返回值一樣會出現什麼問題呢?

// b物件轉換成a物件()

a btoa

(b b)

;a btoanew

(b b)

;// b物件集合轉換成a物件集合

list

blisttoalist

(list

blist)

;

// b物件轉換成a物件()

@named

('btoa'

)a btoa

(b b)

;@named

('btoanew'

)a btoanew

(b b)

;// b物件集合轉換成a物件集合

(qualifiedbyname =

'btoanew')

list

blisttoalist

(list

blist)

;

此時編譯好的**如下:

public a btoa

(b b)

else

}public a btoanew

(b b)

else

}public list

blisttoalist

(list

blist)

else

return list;

}}

SpringMVC框架的一些底層

類結構圖 首先看一下這個結構圖,dispatcherservlet是springmvc的核心控制器,他遵循了servlet規範.雖然現在是乙個高大上的框架,但是這三個重要方法肯定是不能忽視的.第一步 初始化位於httpservletbean當中的init 方法,因為他是對接servlet容器體系中傳...

Tensorflow 框架的一些細節

其中常用的fetches和feed dict就是常用的傳入引數。fetches主要指從計算圖中取回計算結果進行放回的那些placeholder和變數,而feed dict則是將對應的資料傳入計算圖中佔位符,它是字典資料結構只在呼叫方法內有效。dien 的 在 model.train 和 model....

高併發的一些處理方法

最近一段時間一直在看一些高併發處理策略的文章,在此也稍微總結一下自己的心得 一.高併發 可以這麼理解高併發,在同一時間,有大量使用者同時訪問同乙個url,容易導致伺服器和資料庫資源被佔滿崩潰,資料庫的儲存和更新結果跟理想不一致,例如出現重複的資料記錄,多次新增記錄等資料錯亂問題。二.高併發的處理策略...