System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 国产精品成人无码免费,亚洲日韩精品无码专区加勒比,免费人妻无码不卡中文字幕18禁
  • 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    生成轉換器的方法和系統技術方案

    技術編號:44128531 閱讀:18 留言:0更新日期:2025-01-24 22:47
    本發明專利技術提供了一種生成轉換器的方法和系統,包括:步驟1:根據需要轉換的源對象和目標對象的類型提取屬性或方法信息;步驟2:基于提取的屬性和方法信息,根據JVM的字節碼規范在程序運行時動態生成對象轉換器;所述對象轉換器用于在JVM平臺的程序開發中進行不同類型對象之間的轉換;JVM的字節碼是一段保存在內存中的二進制串,JVM的字節碼規范規定二進制串的格式,對象轉換器為按照JVM的字節碼規范生成的一段二進制串內容。本發明專利技術通過采用運行時字節碼生成技術,解決了代碼侵入和額外的編譯期插件依賴的問題。

    【技術實現步驟摘要】

    本專利技術涉及計算機,具體地,涉及一種生成轉換器的方法和系統


    技術介紹

    1、目前有兩種主流的對象轉換方案:一種是基于反射機制實現(典型工具為:spring框架中的beanuti?ls工具和apache?common框架中的beanut?ils工具),通過運行時反射獲取對象的屬性信息,完成屬性值拷貝,這種方案的缺點在于每次轉換操作都需要進行運行時反射,對于轉換頻率比較高的場景(例如并發量較大的應用服務器)會產生較大的性能損失(在模擬的性能測試中,操作耗時有十倍左右的差距),極端情況下可能會影響服務的正常處理;另一種是基于編譯時代碼生成的技術實現(典型工具為:mapstruct),這種方案解決了反射方案的性能問題,但是通常需要在代碼中插入額外的代碼定義和注解,并且需要在編譯期執行額外的注解處理器,這通常意味著需要使用額外的編譯插件,并且需要額外的項目配置,而在程序預熱完成,穩定運行時,其理論性能與本專利技術幾乎沒有差異。

    2、專利文獻cn106933554a(申請號:201511023820.3)公開了一種類轉換方法和裝置。其中,該方法包括:獲取源類對象和目標類對象,其中,源類對象為源類的對象,目標類對象為目標類的對象;獲取源類對象和目標類對象之間的映射關系;以及通過類轉換器根據映射關系和映射器執行源類對象和目標類對象之間的轉換,其中,類轉換器中預先封裝了類轉換方法,映射器中預先封裝了類轉換規則,類轉換方法用于根據類轉換規則執行類之間的轉換。然而該專利沒有采用運行時字節碼生成技術,無法解決代碼侵入和額外的編譯期插件依賴的問題。


    技術實現思路

    1、針對現有技術中的缺陷,本專利技術的目的是提供一種基于運行時字節碼編輯的對象轉換方法、系統、介質。

    2、根據本專利技術提供的基于運行時字節碼編輯的對象轉換方法,包括:當緩存中已經存在源對象到目標對象轉換的對象轉換器,則直接調用對象轉換器完成轉換任務;否則,根據jvm的字節碼規范在程序運行時動態生成對象轉換器,并結合對象緩存技術實現高性能對象轉換;

    3、jvm的字節碼是一段保存在內存中的二進制串,jvm的字節碼規范規定二進制串的格式,對象轉換器為按照jvm的字節碼規范生成的一段二進制串內容。

    4、優選的,對象轉換方法包括:

    5、步驟s1:根據需要轉換的源對象和目標對象的類型提取屬性或方法信息;

    6、步驟s2:根據提取的屬性和方法信息,通過字節碼編輯技術在運行時生成需要的對象轉換器,并實例化后放入緩存中;

    7、步驟s3:調用生成的對象轉換器完成源對象到目標對象的轉換任務。

    8、優選的,所述步驟s2包括:

    9、步驟s2.1:分析目標對象的屬性和方法,過濾出public屬性和setter方法;

    10、步驟s2.2:在源對象的屬性和方法中根據過濾出的public屬性和setter方法尋找相對應的public屬性和getter方法;

    11、步驟s2.3:基于目標對象的publ?ic屬性和setter方法以及源對象的publ?ic屬性和getter方法生成新的對象轉換器的字節碼,新的對象轉換器的字節碼包含一個方法,接收源對象和目標對象作為參數,并返回處理后的目標對象,方法邏輯中調用源對象的getter方法獲取相應屬性值,并調用目標對象的setter方法進行賦值。

    12、優選的,所述步驟s2.3包括:

    13、通過java反射技術獲取目標對象和源對象的類定義,找到相應的屬性和方法的名字和字段類型/參數類型,對目標對象中每一個public屬性和setter方法分別進行如下處理:尋找源對象中的publ?ic屬性和getter方法中是否有相同的名字和類型的條目,如果有則生成一個將源對象字段賦值到目標字段對象中的方法,搜索完所有字段的方法后,將生成的轉換器方法字節碼組合到一個轉換器類的字節碼中,最終生成完整的轉換器字節碼。

    14、根據本專利技術提供的基于運行時字節碼編輯的對象轉換系統,包括:當緩存中已經存在源對象到目標對象轉換的對象轉換器,則直接調用對象轉換器完成轉換任務;否則,根據jvm的字節碼規范在程序運行時動態生成對象轉換器,并結合對象緩存技術實現高性能對象轉換;

    15、jvm的字節碼是一段保存在內存中的二進制串,jvm的字節碼規范規定二進制串的格式,對象轉換器為按照jvm的字節碼規范生成的一段二進制串內容。

    16、優選的,對象轉換系統包括:

    17、模塊m1:根據需要轉換的源對象和目標對象的類型提取屬性或方法信息;

    18、模塊m2:根據提取的屬性和方法信息,通過字節碼編輯技術在運行時生成需要的對象轉換器,并實例化后放入緩存中;

    19、模塊m3:調用生成的對象轉換器完成源對象到目標對象的轉換任務。

    20、優選的,所述模塊m2包括:

    21、模塊m2.1:分析目標對象的屬性和方法,過濾出public屬性和setter方法;

    22、模塊m2.2:在源對象的屬性和方法中根據過濾出的public屬性和setter方法尋找相對應的public屬性和getter方法;

    23、模塊m2.3:基于目標對象的publ?ic屬性和setter方法以及源對象的publ?ic屬性和getter方法生成新的對象轉換器的字節碼,新的對象轉換器的字節碼包含一個方法,接收源對象和目標對象作為參數,并返回處理后的目標對象,方法邏輯中調用源對象的getter方法獲取相應屬性值,并調用目標對象的setter方法進行賦值。

    24、優選的,所述模塊m2.3包括:

    25、通過java反射技術獲取目標對象和源對象的類定義,找到相應的屬性和方法的名字和字段類型/參數類型,對目標對象中每一個public屬性和setter方法分別進行如下處理:尋找源對象中的publ?ic屬性和getter方法中是否有相同的名字和類型的條目,如果有則生成一個將源對象字段賦值到目標字段對象中的方法,搜索完所有字段的方法后,將生成的轉換器方法字節碼組合到一個轉換器類的字節碼中,最終生成完整的轉換器字節碼。

    26、根據本專利技術提供的存儲有計算機程序的計算機可讀存儲介質,所述計算機程序被處理器執行時實現所述的基于運行時字節碼編輯的對象轉換方法的步驟。

    27、根據本專利技術提供的電子設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述計算機程序被處理器執行時實現所述的基于運行時字節碼編輯的對象轉換方法的步驟。

    28、與現有技術相比,本專利技術具有如下的有益效果:

    29、(1)本專利技術通過采用運行時字節碼生成技術動態生成對象轉換器,解決了類型不確定的對象之間進行轉換時只能通過性能較差的反射機制才能進行轉換操作的問題;

    30、(2)本專利技術通過采用本地緩存存儲動態生成的對象轉換器,解決了字節碼生成及動態類加載過程造成的性能損失本文檔來自技高網...

    【技術保護點】

    1.一種生成轉換器的方法,其特征在于,包括:

    2.根據權利要求1所述的生成轉換器的方法,其特征在于,在對象轉換過程中,相同字段數據互相復制;

    3.根據權利要求1所述的生成轉換器的方法,其特征在于,所述步驟2包括:

    4.根據權利要求3所述的生成轉換器的方法,其特征在于,所述步驟2.3包括:

    5.根據權利要求4所述的生成轉換器的方法,其特征在于,定義兩個類:SimpleTestBeanSrc作為源對象類型,SimpleTestBeanDist作為目標對象類型,兩個類定義為相同的結構;

    6.一種生成轉換器的系統,其特征在于,包括:

    7.根據權利要求6所述的生成轉換器的系統,其特征在于,在對象轉換過程中,相同字段數據互相復制;

    8.根據權利要求6所述的生成轉換器的系統,其特征在于,所述模塊M2包括:

    9.根據權利要求8所述的生成轉換器的系統,其特征在于,所述模塊M2.3包括:

    10.根據權利要求9所述的生成轉換器的系統,其特征在于,定義兩個類:SimpleTestBeanSrc作為源對象類型,SimpleTestBeanDist作為目標對象類型,兩個類定義為相同的結構;

    ...

    【技術特征摘要】

    1.一種生成轉換器的方法,其特征在于,包括:

    2.根據權利要求1所述的生成轉換器的方法,其特征在于,在對象轉換過程中,相同字段數據互相復制;

    3.根據權利要求1所述的生成轉換器的方法,其特征在于,所述步驟2包括:

    4.根據權利要求3所述的生成轉換器的方法,其特征在于,所述步驟2.3包括:

    5.根據權利要求4所述的生成轉換器的方法,其特征在于,定義兩個類:simpletestbeansrc作為源對象類型,simpletestbeandist作為目標對象類型,兩個類定義為相同的結構;

    <...

    【專利技術屬性】
    技術研發人員:陳克松謝金航傅稷禹
    申請(專利權)人:歐冶工業品股份有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲AV无码乱码在线观看裸奔 | 亚洲中文字幕无码一去台湾| 在线观看片免费人成视频无码| 国内精品无码一区二区三区 | 亚洲AV无码国产精品麻豆天美| 少妇人妻偷人精品无码视频 | 中文字幕丰满乱孑伦无码专区| 久久久久久国产精品免费无码 | 亚洲AV综合色区无码二区爱AV| 少妇无码太爽了不卡视频在线看| 免费看又黄又无码的网站| 无码人妻丰满熟妇区毛片 | 久久亚洲精品无码VA大香大香| 无码国模国产在线无码精品国产自在久国产 | 无码日韩人妻av一区免费| 亚洲日韩v无码中文字幕| 少妇无码?V无码专区在线观看| 亚洲国产成人无码AV在线| 亚洲AV无码不卡在线播放| a级毛片免费全部播放无码| 伊人久久大香线蕉无码麻豆| 亚洲av永久中文无码精品| 亚洲日韩乱码中文无码蜜桃臀| 亚洲精品无码Av人在线观看国产 | 中文字幕无码视频专区| 久久亚洲精品无码网站| 永久免费av无码网站韩国毛片| 亚洲2022国产成人精品无码区| 久久国产三级无码一区二区| 亚洲?V无码乱码国产精品| 亚洲AV无码之日韩精品| 久久亚洲AV无码西西人体| 无码任你躁久久久久久久| 精品久久久久久无码中文字幕| 夜夜精品无码一区二区三区| yy111111少妇影院里无码| 三上悠亚ssⅰn939无码播放| 日韩人妻无码一区二区三区综合部| 久久久久亚洲?V成人无码| 一本加勒比HEZYO无码资源网| 亚洲日韩精品一区二区三区无码|