oxm : 是spring 3.0的一个新特性 o/xMapping 什么是o/xMapping?
            o/x mapping 入门:
                    功能:实践类与xml之间的相互转换。
                    编组:marshalling 将javabean转化为xml
                    解组:unmarshalling 将xml转化为JavaBean
                    好处:
                        1.因为spring的bean库支持实例化o/x编组的注入,所以使用xml编写的bean也可以注入spring中使用。这样做可以将程序和配置分类处理。结构更清晰。                           2.o/x使用面向接口的形式开发,所以单独的开发者不需要关注其实现细节,并且想要改变其实现方式,只需要修改o/x的实现配置即可。
                        3.异常类型层次结构化,spring把实现原厂的异常进行了自己的封装。并且是运行时异常!这样做可以更精准的定位异常。
                    代码demo:
                        maven pom文件信息:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.spider</groupId><artifactId>SpringOXM</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.5.RELEASE</version></dependency><!--oxm功能类jar--><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>4.2.5.RELEASE</version></dependency><!--oxm功能类jar--><dependency><groupId>org.codehaus.castor</groupId><artifactId>castor</artifactId><version>1.3.2</version><type>pom</type></dependency><!--oxm功能类jar--><dependency><groupId>org.codehaus.castor</groupId><artifactId>castor-xml</artifactId><version>1.3.2</version></dependency><!--spring上下文--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.5.RELEASE</version></dependency></dependencies></project>

配置文件设置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!--将编组和解组功能导入到oxmDemo类中--><bean id="oxmDemo" class="com.spider.OxmDemo"><property name="marshaller" ref="castorMarshaller" /><property name="unmarshaller" ref="castorMarshaller" /></bean><!-- 引入castor包:castor-1.3.2-core.jar,castor-1.3.2-xml.jar --><bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller"><!--包含映射关系的xml,如果不添加,解组时无法解析root元素--><property name="mappingLocation" value="classpath:mapping.xml" /></bean>
</beans>

oxmDemo:编组解组调用类:

package com.spider;import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class OxmDemo {private Marshaller marshaller;//编组类private Unmarshaller unmarshaller;//解组类public Marshaller getMarshaller() {return marshaller;}public void setMarshaller(Marshaller marshaller) {this.marshaller = marshaller;}public Unmarshaller getUnmarshaller() {return unmarshaller;}public void setUnmarshaller(Unmarshaller unmarshaller) {this.unmarshaller = unmarshaller;}/*** @param object 编码对象* @param filepath xml输出路径* @throws IOException io异常*/public void converFromObjectToXML(Object object,String filepath) throws IOException {FileOutputStream os = null;try{os = new FileOutputStream(filepath);getMarshaller().marshal(object,new StreamResult(os));}finally {if(os!=null){os.close();}}}/*** @param xmlfile xml文件位置* @return* @throws IOException*/public Object converFromXMLToObject(String xmlfile) throws IOException{FileInputStream is = null;try{is = new FileInputStream(xmlfile);return getUnmarshaller().unmarshal(new StreamSource(is));}finally {if(is!=null){is.close();}}}
}

Customer:model类

package com.spider.model;public class Customer {private String name;private String sex;private Boolean flag;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Boolean getFlag() {return flag;}public void setFlag(Boolean flag) {this.flag = flag;}@Overridepublic String toString() {return "Customer{" +"name='" + name + '\'' +", sex='" + sex + '\'' +", flag=" + flag +'}';}
}

测试类:

import com.spider.OxmDemo;
import com.spider.model.Customer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;public class MyTest {private static final String XML_FILE_NAME = "E:\\spider-developer\\SpringOXM\\customer.xml";//文件输出位置public static void main(String[] args) throws IOException {ApplicationContext appContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");OxmDemo oxmDemo = (OxmDemo) appContext.getBean("oxmDemo");Customer customer = new Customer();customer.setName("xiaowan");customer.setFlag(false);customer.setSex("man");System.out.println("Conver Object to XML");oxmDemo.converFromObjectToXML(customer,XML_FILE_NAME);System.out.println("Done /n");System.out.println("Conver XML to Object");Customer result = (Customer) oxmDemo.converFromXMLToObject(XML_FILE_NAME);System.out.println(result);}
}

console结果显示:

Conver XML to Object
Customer{name='xiaowan', sex='man', flag=false}

Process finished with exit code 0

调用编组时调用Marshaller下的void marshal(Object var1, Result var2)方法,解组时调用Unmarshaller下的Object unmarshal(Source var1)方法。
                    源码:

Spring oxm 入门相关推荐

  1. Spring oxm入门实例

    O/XMapper是什么? Spring3.0的一个新特性是O/XMapper.O/X映射器这个概念并不新鲜,O代表Object,X代表XML.它的目的是在Java对象(几乎总是一个plainoldJ ...

  2. 【Spring】Spring oxm 入门初尝试

    O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...

  3. java oxm_Spring oxm入门实例

    o/xmapper是什么? spring3.0的一个新特性是o/xmapper.o/x映射器这个概念并不新鲜,o代表object,x代表xml.它的目的是在java对象(几乎总是一个plainoldj ...

  4. Java Spring框架入门详解教程【多测师_何sir】

    Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...

  5. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  6. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  7. Spring Boot入门——全局异常处理

    Spring Boot入门--全局异常处理 参考文章: (1)Spring Boot入门--全局异常处理 (2)https://www.cnblogs.com/studyDetail/p/702758 ...

  8. Spring Security 入门(五):在 Spring-Boot中的应用

    前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖  <parent>    <groupId>org.springframework.bo ...

  9. Spring Security 入门(四):自定义-Filter

    前文导读 - Spring Security入门(一):登录与退出 - Spring Security入门(二):基于数据库验证 - Spring Security入门(三):密码加密 本文解决问题 ...

最新文章

  1. Win7系统安装MySQL5.5.21图解教程
  2. 意外的服务器响应_响应式系统reactive system初探
  3. es6 --- 自制迭代器
  4. Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发
  5. 前端学习(3030):vue+element今日头条管理-顶部导航栏布局
  6. 苹果手机内存怎么查_为什么苹果手机内存越用越小
  7. ecshop php7 mysql_ecshop如何修改并支持PHP7
  8. sql 去重查询 distinct
  9. Unity关于Layer的管理
  10. 天空的心事,只有云懂
  11. 在电脑上下载哔哩哔哩中的视频
  12. Web服务器性能测试工具介绍
  13. 量子计算机工作原理如何解释,量子计算机工作原理
  14. Linux操作系统的pstack工具
  15. 排序与分页Pagination
  16. 如何看待”咸鱼”一样的活着
  17. 如何提取视频中的音频,这个方法真的很简单
  18. keystone中Vertify operation出现:No handlers could be found for logger keystoneclient.httpclient的问题
  19. Python操作MySQL分享
  20. 【Leetcode】1824. Minimum Sideway Jumps

热门文章

  1. 微信小程序上传文件400
  2. jmeter之get请求和post请求区别
  3. 解决devtools打不开
  4. 如何 在adobe reader中 截取 画面 清晰的图片 图表 截图(原来画面不清楚,模糊 最为明显) pdf 。word
  5. Android壁纸隐藏,android – 壁纸设置强制关闭
  6. 企业网站关键词布局的策略,技巧和注意事项
  7. 关键词布局排名优化方法
  8. 3.19 使用魔术橡皮擦工具擦除图像背景 [原创Ps教程]
  9. error pulling image configuration: Get https://registry-1.docker.io/v2/library/redis/blobs/sha256:7e
  10. 电商后台管理系统——首页基本实现