學習《spring 3.x企業應用開發實戰》之使用OXM進行物件XML對映
(2)XStream架構組成:
- Converters(轉換器):當XStream遇到需要轉換的物件時,它會委派給合適的轉換器實現。
- IO(輸入/輸出):XStream是通過HierarchicalStreamWriter和HierarchicalStreamReader從底層XML資料中抽象而來,分別用於序列化和反序列化操作。
- Context(上下文):XStream序列化反序列化物件時會建立2個類MarshallingContext和UnmarshallingContext,由塔門來處理資料並委派給合適的轉換器。
- Facade(統一入口):將上面的3點整合在一起,以統一的介面開放給使用者使用。
2.3、使用XStream別名
- 類別名:用alias(String name, Class type)。
- 類成員別名:用aliasField(String alias, Class definedIn, String fieldName)。
- 類成員作為屬性別名:用aliasAttribute(Class definedIn, String attributeName, String alias),單獨命名沒有意義,還要通過useAttributeFor(Class definedIn, String fieldName)應用到某個類上。
2.4、XStream轉換器 在開發過程中,有時候需要轉換一些自定義的型別,只要實現Converter介面,並呼叫XStream的registerConverter()方法註冊轉換器就可以。 2.5、XStream註解 (1)XStream常用註解如下:
(2)使用 XStream xstream=new XStream(new DomDriver()); 載入物件有2種方式: ①方式一: xstream.processAnnotations(AAA.class); xstream.processAnnotations(BBB.class); ②方式二: xstream.autodetectAnnotations(true);//自動載入註解bean,而且還快取了標註的物件 2.6、流化物件 (1)XStream為ObjectInputStream和ObjectOutputStream提供了替代實現,允許以物件流的方式進行XML序列化或反序列化操作。前面是基於DOM的XML解析器讀取的XML,這裡我們顯然應該使用流的方式進行解析。 示例如下:
(2)使用PrettyWriter和CompactWriter的區別就在於PrettyWriter會格式化生成的XML,而CompactWriter會壓縮生成的XML。 2.7、持久化API (1)XStream提供了一套簡單的方式,可以將集合中的物件持久化到檔案中,如:XmlArrayList、XmlSet、XmlMap等。 (2)在建立集合之前,還需要指定一個持久化策略PersistenceStrategy。 2.8、處理JSON (1)XML在Web Service中有不可動搖的地位,但是在大多數web應用中,還是多采用輕量級的JSON作為資料交換格式。 (2)XStream提供了JettisonMappedXmlDriver和JsonHierarchicalStreamDriver來完成java物件和json的轉換工作。 示例如下:
(3)JettisonMappedXmlDriver和JsonHierarchicalStreamDriver的區別: ①JettisonMappedXmlDriver生成的是壓縮的JSON,而JsonHierarchicalStreamDriver生成的是格式化的JSON。 ②要想將JSON轉換為物件,只能使用JettisonMappedXmlDriver。 3、其他常見的 O/X Mapping開源專案 JAXB、XMLBeans、Cstor、JiBX的比較:
4、與Spring OXM整合 4.1、Spring OXM概述 (1)Spring OXM對主流O/X Mapping框架做了一個統一的抽象和封裝,Marshaller和Unmarshaller是Spring OXM兩個核心介面。Marshaller用於將物件轉成XML,Unmarshaller用於將XML轉成物件。 (2)各O/X Mapping元件包裝器如下:
4.2、在Spring中進行配置 (1)XStreamMarshaller配置例項:
5、小結 (1)java應用程式的XML資料繫結可以歸納為2種方式:
- 根據XML文件生成Java語言程式碼(如JAXB、XMLBeans、Castor)。
- 使用某種形式的對映繫結方法,也就是設定Java類如何與XML進行關聯(如XStream、Castor、JiBX)。
- 使用由Schema或DTD定義的穩定文件結構,並且該結構適合應用程式的需要,則程式碼生成方法可能是最佳選擇。
- 如果使用現有的Java類,或者希望使用類的結構,該結構反映應用程式對資料的用法,而不是XML結構,則對映方法是最佳選擇。
相關推薦
學習《spring 3.x企業應用開發實戰》之使用OXM進行物件XML對映
1、認識XML解析技術 1.1、XML相關概念 (1)DTD:XML語法規則,是XML檔案的驗證機制,可以通過比較XML文件和DTD檔案看文件是否符合規範,元素和標籤是否使用正確。 (2)XML是SOA的基礎。 1.2、XML處理技術 (1)為了使用XML,我們需要通過X
學習《spring 3.x企業應用開發實戰》之Spring的事務管理
1、資料庫事務基礎知識 1.1、資料庫事務的概念 (1)資料庫事物的4個特性(ACID): 原子性(Atomic):表示組成一個事務的多個數據庫操作是一個不可分割的原子單元,所有的操作要麼全部成功,要麼全部失敗。一致性(Consistency):事務操作成功之後,資料庫所
Spring 3 x 企業應用開發實戰 含CD光碟1張
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【Spring】Spring 3.x企業應用開發實戰(6)----BeanFactory
BeanFactory是一個類工廠,是類的通用工廠。不多說,直接進入BeanFactory的使用: 首先建一個Bean類,Car.java package com.techman.reflect
Spring 入門例項 簡易登入系統(精通Spring+4.x++企業應用開發實戰 學習筆記一)
論壇登入模組 在持久層有兩個DAO類,分別是UserDao和LoginLogDao,在業務層對應一個業務類UserService,在展現層擁有一個LoginController類和兩個JSP頁面,分別是登入頁面login.jsp和登入成功頁面main.js
《精通Spring+4.x++企業應用開發實戰》讀後感
來講 ring 如果 項目 企業 xml配置 登錄 了解 能夠 引言 還記得大三時上培訓班的是時候,當時的培訓老師說自己是本地講解spring最好的講師,但是後來等我實習了看了《Spring 3.x 企業應用開發實戰》以及後續版本《精通Spring+4.x++企業應用開發實
《精通Spring4.x企業應用開發實戰》第三章
這一章節主要介紹SpringBoot的使用,也是學習的重點內容,之後就打算用SpringBoot來寫後臺,所以提前看一下還是很有必要的。 3.SpringBoot概況 3.1.1SpringBoot發展背景 Spring Boot的出現。Spring Boot可讓開發人員不再需要編寫複雜的XML配
精通Spring+4.x++企業開發與實踐學習之SpringBoot
#SpringBoot 在SpringBoot1.2以前使用@Configuration,@ComponentScan,@EnableAutiCofiguration註解標識啟動類,到了SpringBoot1.2時,直接使用@SpringBootApplication代替。 #
Spring Boot 企業級應用開發實戰
-o .com 註解 ping 折騰 jar 服務 開啟 blog Spring Boot 企業級應用開發實戰【下載地址:https://pan.baidu.com/s/1SbB-auGkUN6r2i6dtv7t_w 】 Spring Boot是目前Spring技術體系中炙
基於Python的Web應用開發實戰——3 模板
要想開發出易於維護的程式,關鍵在於編寫形式簡潔且結構良好的程式碼。 當目前為止,你看到的示例都太簡單,無法說明這一點,但Flask檢視函式的兩個完全獨立的作用卻被融合在了一起,這就產生了一個問題。 檢視函式的作用很明確,即生成請求的響應。 如第2章中的示例,對簡單的請求來所,這就足夠了。
(Flask Web開發:基於Python的Web應用開發實戰)------學習筆記(第2章)
第2章 程式的基本結構 本章將帶你瞭解 Flask 程式各部分的作用,編寫並執行第一個 Flask Web 程式。 2.1 初始化 所有 Flask 程式都必須建立一個程式例項,程式例項是 Flask 類的物件。 Web 伺服器使用一種名為 Web 伺服器閘
《FlaskWeb開發基於Python的Web應用開發實戰第2版》中英PDF+源代碼等4本書學習
開發實戰 leo 能夠 ffffff 第二版 http 資源 web開發 vpd 資源鏈接:https://pan.baidu.com/s/1p7CyLEodCy3e1u93jTVQLg《Flask Web開發 基於Python的Web應用開發實戰第2版》中英PDF+源代碼
談談Spring Boot 企業級應用開發實戰
Spring Boot是目前Spring技術體系中炙手可熱的框架之一,既可用於構建業務複雜的企業應用系統,也可以開發高效能和高吞吐量的網際網路應用。Spring Boot框架降低了Spring技術體系的使用門檻,簡化了Spring應用的搭建和開發過程,提供了流行的第三方開源技術的自動整合。 推薦
精通Spring+4.x++企業開發與實踐之SpEL
java支援動態語言javascript 例子: ScriptEngineManager manager = **new** ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(**"JavaScript"
精通Spring+4.x++企業開發與實踐之基於@AspectJ和Schema的AOP
# 精通Spring+4.x++企業開發與實踐之基於@AspectJ和Schema的AOP 使用@AspectJ的條件 1.保證是java5以上的版本(需要使用註解,而java5及以上才使用註解) 2.需要將Spring的asm(輕量級的位元組碼處理框架)的模組新增
精通Spring+4.x++企業開發與實踐之SpringAOP基礎
AOP概述 AOP的簡稱"Aspect Oriented Programing"的簡稱———面向切面程式設計。 AOP術語 連線點 一個類或者一段程式程式碼用於一些具有邊界性質的特性的特定點。這些程式碼的特定點就被成為"連線點"。Spring只支援方法的連線點,即僅能在方法呼叫前,方
精通Spring+4.x++企業開發與實踐之Spring容器高階主題
Spring容器高階主題 內部工作機制 Spring的AbstractApplicationContext是ApplicationContext的抽象實現類,該抽象類的refresh()方法定義了Spring容器在載入配置檔案後的各項處理過程這些處理過程清晰的刻畫了Spring容器啟動時所執
精通Spring+4.x++企業開發與實踐之IoC容器中裝配Bean
Spring配置概述 Spring屬性注入 JavaBean關於屬性命名的特殊規範 Spring配置檔案中的<property></property>元素所指定的屬性名和Bean實現類的Setter方法滿足Sun JavaBean的屬性命名規範:xxx的屬性對應的
精通Spring+4.x++企業開發與實踐之IOC容器
#IOC容器 #類裝載器ClassLoader 尋找類的位元組碼檔案並構造出類再JVM內部標識物件的元件。再Java中, 類裝載器吧一個類裝入JVM,需要入如步驟: (1)裝載:查詢和匯入Class檔案. (2)連結:執行校驗,準備和解析步驟,其中解析步驟是可以選擇的。 1.準備:給
Python 3網絡爬蟲開發實戰+精通Python爬蟲框架Scrapy學習資料
分布式 過多 博客 開發實戰 pyquery 閱讀 表達式 故障 hub 《Python 3網絡爬蟲開發實戰》介紹了如何利用Python 3開發網絡爬蟲,首先介紹了環境配置和基礎知識,然後討論了urllib、requests、正則表達式、Beautiful Soup、XPa