Spring oxm 入门
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 入门相关推荐
- Spring oxm入门实例
O/XMapper是什么? Spring3.0的一个新特性是O/XMapper.O/X映射器这个概念并不新鲜,O代表Object,X代表XML.它的目的是在Java对象(几乎总是一个plainoldJ ...
- 【Spring】Spring oxm 入门初尝试
O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...
- java oxm_Spring oxm入门实例
o/xmapper是什么? spring3.0的一个新特性是o/xmapper.o/x映射器这个概念并不新鲜,o代表object,x代表xml.它的目的是在java对象(几乎总是一个plainoldj ...
- Java Spring框架入门详解教程【多测师_何sir】
Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...
- java中batch基础_详解Spring batch 入门学习教程(附源码)
详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...
- Spring Boot 入门
一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...
- Spring Boot入门——全局异常处理
Spring Boot入门--全局异常处理 参考文章: (1)Spring Boot入门--全局异常处理 (2)https://www.cnblogs.com/studyDetail/p/702758 ...
- Spring Security 入门(五):在 Spring-Boot中的应用
前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.bo ...
- Spring Security 入门(四):自定义-Filter
前文导读 - Spring Security入门(一):登录与退出 - Spring Security入门(二):基于数据库验证 - Spring Security入门(三):密码加密 本文解决问题 ...
最新文章
- Win7系统安装MySQL5.5.21图解教程
- 意外的服务器响应_响应式系统reactive system初探
- es6 --- 自制迭代器
- Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发
- 前端学习(3030):vue+element今日头条管理-顶部导航栏布局
- 苹果手机内存怎么查_为什么苹果手机内存越用越小
- ecshop php7 mysql_ecshop如何修改并支持PHP7
- sql 去重查询 distinct
- Unity关于Layer的管理
- 天空的心事,只有云懂
- 在电脑上下载哔哩哔哩中的视频
- Web服务器性能测试工具介绍
- 量子计算机工作原理如何解释,量子计算机工作原理
- Linux操作系统的pstack工具
- 排序与分页Pagination
- 如何看待”咸鱼”一样的活着
- 如何提取视频中的音频,这个方法真的很简单
- keystone中Vertify operation出现:No handlers could be found for logger keystoneclient.httpclient的问题
- Python操作MySQL分享
- 【Leetcode】1824. Minimum Sideway Jumps
热门文章
- 微信小程序上传文件400
- jmeter之get请求和post请求区别
- 解决devtools打不开
- 如何 在adobe reader中 截取 画面 清晰的图片 图表 截图(原来画面不清楚,模糊 最为明显) pdf 。word
- Android壁纸隐藏,android – 壁纸设置强制关闭
- 企业网站关键词布局的策略,技巧和注意事项
- 关键词布局排名优化方法
- 3.19 使用魔术橡皮擦工具擦除图像背景 [原创Ps教程]
- error pulling image configuration: Get https://registry-1.docker.io/v2/library/redis/blobs/sha256:7e
- 电商后台管理系统——首页基本实现