O/xmapper 란 무엇입니까?
Spring 3.0의 새로운 기능은 O/xmapper입니다. O/X Mapper의 개념은 새로운 것이 아닙니다. o 객체를 나타내고 X는 XML을 나타냅니다. 그 목적은 Java 객체 (거의 항상 plainoldjavaobject, 또는 pojo로 약칭)와 XML 문서 사이에서 앞뒤로 변환하는 것입니다.
예를 들어, 여러 속성이있는 간단한 콩이있을 수 있으며 비즈니스는 해당 Java 객체를 XML 문서로 변환해야합니다. Spring의 O/Xmapper는 귀하를 위해 해당 문제를 해결할 수 있습니다. 차례로 XML 문서를 간단한 Javabean으로 변환 해야하는 경우 Spring의 O/Xmapper도 유능합니다.
주목할만한 점 : Springo/Xmapper는 인기있는 타사 프레임 워크에서 구현 한 통합 인터페이스 일뿐입니다. Spring의 O/X 기능을 활용하려면 Java 객체와 XML 사이를 앞뒤로 변환하는 유틸리티가 필요합니다. Castor는 인기있는 타사 도구 이며이 기사는이 도구를 사용합니다. 다른 도구로는 XMLBEANS, XMLBINDING (JAXB), JIBX 및 XSTREAM을위한 Java 아키텍처가 있습니다.
마샬링과 연합
O/X 매핑을 수행 할 때는 종종 마샬링 및 비 모성이라는 용어가 나타납니다.
마샬링은 javabean을 XML 문서로 변환하는 프로세스를 말하며, 이는 Javabean의 모든 필드와 필드 값이 XML 요소 또는 속성으로 XML 파일에 채워질 것임을 의미합니다. 때로는 마샬링을 직렬화라고도합니다.
예상대로, unmarshalling은 XML 문서를 Javabean으로 변환하는 마샬링의 정반대의 프로세스입니다. 이는 XML 문서의 모든 요소 또는 속성이 Javabean으로 Java 필드로 채워져 있음을 의미합니다. 때때로, 끊임없는 것은 불안정이라고도합니다.
Spring의 O/xmapper 사용의 이점
Spring의 O/XMapper를 사용하면 가장 직접적인 이점 중 하나는 Spring 프레임 워크의 다른 기능을 활용하여 구성을 단순화 할 수 있다는 것입니다. Spring 's Bean Library는 인스턴스화 된 O/X Marshaller 주입 (즉, 앞에서 언급 한 "종속성 주입")을 사용하는 물체의 사용을 지원합니다. 이로 인해 응용 프로그램 개발 및 배포 속도가 빨라질 것입니다.
견고한 객체 지향 설계 사례에 따라 Springo/X 프레임 워크는 O/X 기능을 수행하는 데 사용되는 Marshaller와 Unmarshaller의 두 인터페이스 만 정의합니다. 이는이 프레임 워크를 사용하는 또 다른 중요한 이점입니다. 이러한 인터페이스의 구현은 독립적 인 개발자에게 완전히 열려 있으며 개발자는 코드를 수정하지 않고 쉽게 전환 할 수 있습니다. 예를 들어, O/X 변환을 위해 Castor로 시작하지만 필요한 기능이 부족하다는 것을 알게되면이 시점에서 코드 변경없이 XMLBeans로 전환 할 수 있습니다. 당신이해야 할 유일한 일은 새 O/x 프레임 워크를 사용하기 위해 스프링 구성 파일을 변경하는 것입니다.
Spring의 O/Xmapper를 사용하면 통합 된 예외 계층입니다. Spring Framework는 O/xmapper를 위해 Spring 자체에서 생성 된 런타임 예외로 원래 예외 객체를 래핑하여 데이터 액세스 모듈을 사용하여 설정된 패턴을 따릅니다. 타사 제공 업체가 던진 원래 예외는 스프링 런타임 예외로 래핑되므로 예외의 근본 원인을 찾을 수 있습니다. 예외가 런타임 예외로 감소하기 때문에 예외를 포착하기 위해 코드를 수정하는 것을 귀찮게 할 필요는 없습니다. 다음 런타임 예외는 기본 예외 XMLMappingException을 확장합니다. GenericMarShallingFailureException, ValidationFailureException, MarshallingFailureException 및 UnmarlingFailureException.
선생님과 시작합니다
구성 목록 :
ApplicationContext.xmlSpring 구성 파일
<beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://wwwne http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <bean id ="oxmdemo "> <property name ="marshaller "ref ="castormarshaller "/<property name ="nimarshaller "ref ="castormarshaller "/</bean> </bean> </bean> </bean. 패키지 : Castor-1.3.2-core.jar, Castor-1.3.2-xml.jar-> <Bean id = "CastorMarShaller"> <속성 이름 = "mappingLocation"value = "classPath : Mapping.xml"/> </beans> </beans>
마샬링 및 그룹화를 할 때, 그룹화를 해제 할 때 적용된 매핑 형식을 사용해야합니다 (여기서 질문이 있습니다. 여기에 문제가 없기 때문에 그룹화에 대한 매핑을 통해서만 형식화 될 수 있는지 모르겠습니다.
Mapping.xml 파일
<mapping> <class name = "com.mdf.springoxm.customer"> <map-to xml = "customer"/<field name = "flag"type = "boolean"> <bind-xml name = "flag"node = "요소"/> </field> <field> <name "type" "string"> <xml name = "node"node "node" "node" "node" " 이름 = "sex"type = "String"> <bind-xml name = "sex"node = "element"/> </field> </class> </mapping>
Bean 파일을 사용자 정의하십시오
Customer.java
package com.mdf.springoxm; 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) {}} public boolean getflag (retory) {} flag;} public void setflag (부울 플래그) {this.flag = flag;}}xmldemo.java 파일
package com.mdf.springoxm; import java.io.fileInputStream; import java.io.fileoutputStream; import java.io.ioexception; import javax.xml.transform.stream.streamresult; import javax.xml.transform.stream.streamsource; import org.sprongrewwork.soxwork.oxwork org.springframework.oxm.unmarshaller; public class oxmdemo {private marshaller marshaller; private unmarshaller undarshaller; public Marshaller getmarshaller () {return marshaller;} public void setmarshaller (Marshaller Marshaller) {this.marshaller = Marshaller; {return unmarshaller;} public void setunmarshaller (unmarshaller unmarshaller) {this.unmarshaller = unmarshaller;} public void convertfromobjecttoxml (객체 개체, 문자열 filepath)는 ioexception {fileoutputstream os = null; fileoutputStream (filepath); getMarShaller (). Marshal (Object, New StreamResult (OS));} 최종적으로 {if (os! = null) {os.close ();}}} public object convertFromxmltoObject (String xmlfile) IoException {fileInputStream is = NERL; fileInputStream (xmlfile); return getUnmarshal (). unmarshal (new streamSource (is));} 최종 {if (is! = null) {is.close ();}}}}시험
import org.springframework.context.applicationcontext; import org.springframework.context.support.classpathxmlapplicationcontext; import com.mdf.springoxm.customer; import com.mdf.springoxm.oxmdemo; exmation java.io.ioexcmation; Private java.io.ioexcmation; xml_file_name = "customer.xml"; public static void main (string [] args)은 ioexception {applicationcontext appContext = new ClassPathXmlApplicationContext ( "ApplicationContext.xml"); oxmdemo conver = (oxmdemo) appContext.getBean (oxmdemo "); customer (); customer.setname ( "yiibai"); customer.setflag (true); customer.setsex ( "haikou haidiandao"); system.out.println ( "객체 변환 xml!"); // 객체에서 xml 파일에서 convertoxml (customer, xml_file_name); system.out.out.out.out.out.out.out.out.out.out.print. /n")) ;system.out.println("convert xml xml xml back to 객체!테스트 결과 :
2016 년 5 월 11 일 오후 2:27:52 org.springframework.context.support.classpathxmlapplicationcontext repayerfresh 정보 : 새로 고침 org.spramframework.context.support.classPathXMlapplicationContext@122212 : STARTUP DATE [11 14:27:51 CST 2016]; 컨텍스트 계층 구조 2016 년 5 월 11 일 2:27:52 PM org.springframework.beans.beans.come.xml.xmlbeandefinitionreader loadbeandefinitions 정보 : 클래스 경로 리소스에서 XML bean 정의로드 [ApplicationContext.xml] 2016 년 5 월 11 일 5 월 2:27:52 Org.spramwhorgh.scastor. AfterProperTiesset 정보 : [Class Path Resource [Mapping.xml]]를 사용하여 구성되었습니다. 객체를 XML로 변환하십시오! 완료 XML을 객체로 다시 변환! com.mdf.springoxm.customer@b419da 완료
요약
위의 것은이 기사의 Spring Oxm Entry 예제에 관한 모든 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!