O que é o/xmapper?
Um novo recurso do Spring 3.0 é o/xmapper. O conceito de mapeador O/X não é novo. O Representa o objeto e x representa XML. Seu objetivo é converter de um lado para o outro entre os objetos Java (quase sempre um PlainoldJavaObject, ou abreviado como documentos POJO) e XML.
Por exemplo, você pode ter um feijão simples com vários atributos, e sua empresa precisa converter esse objeto Java em um documento XML. O O/Xmapper da Spring pode resolver esse problema para você. Se, por sua vez, você precisará converter um documento XML em um Javabean simples, o O/Xmapper da Spring também é competente.
Uma coisa a observar: Springo/Xmapper é apenas uma interface unificada implementada por estruturas populares de terceiros. Para aproveitar a funcionalidade O/X da Spring, você precisa de um utilitário que se converte entre os objetos Java e o XML. Castor é uma ferramenta de terceiros tão popular, e este artigo usará esta ferramenta. Outras ferramentas incluem XMLBeans, arquitetura Java para XMLBinding (JAXB), JIBX e XSTEAM.
Marshalling e Union
Ao fazer o mapeamento de O/X, você costuma ver os termos marechaling e solucionando.
O Marshalling refere -se ao processo de conversão de um Javabean em um documento XML, o que significa que todos os campos e valores de campo de um Javabean serão preenchidos no arquivo XML como elementos ou atributos XML. Às vezes, o marechalling também é chamado de serialização.
Como você pode esperar, o UNSARSHALLING é exatamente o processo oposto de marechalling, que é converter um documento XML em um Javabean, o que significa que todos os elementos ou atributos do documento XML são preenchidos no Javabean como campos java. Às vezes, o desarratação também é chamado de desaperando.
Benefícios do uso do O/Xmapper da Spring
Um dos benefícios mais diretos do uso do O/Xmapper da Spring é que a configuração pode ser simplificada ao alavancar outros recursos da estrutura da mola. A Biblioteca Bean da Spring suporta o uso de objetos que usam injeção instanciada de O/X Marshaller (isto é, "injeção de dependência" mencionada anteriormente). Reiterar que isso acelerará o desenvolvimento e a implantação de aplicativos.
Seguindo as práticas de design orientadas a objetos sólidos, a estrutura Springo/X define apenas duas interfaces: Marshaller e UNARSHALLER, que são usados para executar funções O/X, que é outro benefício significativo do uso dessa estrutura. A implementação dessas interfaces está completamente aberta a desenvolvedores independentes, e os desenvolvedores podem alterá -los facilmente sem modificar o código. Por exemplo, se você começar com a Castor para conversão de O/X, mas ache que não possui alguma funcionalidade necessária, neste momento você pode mudar para XMLBeans sem nenhuma alteração de código. A única coisa que você precisa fazer é alterar o arquivo de configuração do Spring para usar a nova estrutura O/X.
Outro benefício de usar o O/Xmapper da Spring é a hierarquia de exceção unificada. O Spring Framework segue o padrão estabelecido usando seu módulo de acesso a dados, envolvendo o objeto de exceção original em uma exceção de tempo de execução criada pelo próprio Spring para o/xmapper. Como a exceção original lançada por um provedor de terceiros é envolvido na exceção do tempo de execução da primavera, você pode descobrir a causa raiz da exceção. Você não precisa se preocupar em modificar o código para capturar a exceção, pois a exceção é envolvida em uma exceção de tempo de execução. As seguintes exceções de tempo de execução estendem a exceção subjacente xmlMappingException: GenericMarShallingFailureException, ValidationFailureException, MarshallingFailureException e UNSARSHALLINGFAILUREEXCECTIMENTO.
Introdução ao senhor
Lista de configuração:
ApplicationContext.xmlspring arquivo de configuração
<Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-nstance" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bans-3.0.xsd"> <erning = "oxmdemo"> name = "UNARSHALLER" REF = "CASTORMARSHALLER"/> </SEI> <!-Introdução de Castor Pacote: Castor-1.3.2-core.jar, Castor-1.3.2-xml.jar-> <Bean Id = "CastorMarshaller"> <Nome da propriedade = "MappingLocation")
Ao marechar e não agrupar, o formato de mapeamento aplicado deve ser usado para ter sucesso ao não agrupar (há uma pergunta aqui. Não sei se isso só pode ser formatado através do mapeamento para não -grupo por causa do meu próprio problema de escrita, caso contrário, um erro que o elemento não pode ser encontrado será encontrado).
Arquivo Mapping.xml
<Mapping> <classe name = "com.mdf.springoxm.customer"> <map-to xml = "cliente"/> <field name = "flag" type = "boolean"> <bind-xml name = "flag" node = "elemento"/> </field> <field name "/" type = "string"> <bind "=" name = "sexo" type = "string"> <bind-xml name = "sexo" node = "elemento"/> </field> </class> </mapping>
Personalize arquivos de feijão
Customer.java
pacote com.mdf.springoxm; public class Customer {Nome da String Private; sexo privado de string; Private Boolean Flag; public String getName () {Return Name;} public void setName (Nome da String) {this.name = name;} public string getSex () {return Sex;} public void setSex (string sexo) {{ flag;} public void setFlag (bandeira booleana) {this.flag = flag;}}arquivo xmldemo.java
pacote com.mdf.springoxm; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.ioException; importar javax.xml.Transform.stream.streamResult ;terRaRReRReRce; ImmernStwork.PreamM.Mream.Mream.Stream.Mstream; org.springframework.oxm.unmarshaller; classe pública oxmdemo {private Marshaller marshaller; private unarshaller uncarshaller; public marshaller getMarshaller () {return marshaller;} public void setmarshaller (marshaller) {theMarshaller; {return unarshaller;} public void setunMarshaller (unarshaller unarshaller) {this.unmarshaller = unarshaller;} public void convertFromObjectToxMl (objeto Object, string filepath) lança ioexception {fileoutTream OS = Null; FileOutputStream(filepath);getMarshaller().marshal(object, new StreamResult(os));} finally {if (os != null) {os.close();}}}public Object convertFromXMLToObject(String xmlfile) throws IOException {FileInputStream is = null;try {is = new FileInputStream (xmlfile); return getUnMarshal (). UNARSHAL (novo streamSource (IS));} finalmente {if (is! = Null) {is.close ();}}}}}teste
import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mdf.springoxm.Customer;import com.mdf.springoxm.oxmDemo;import java.io.IOException;public class Main {private static final String Xml_file_name = "Customer.xml"; public static void main (string [] args) lança IoException {ApplicationContext AppContext = new ClassPathXMLApplicationContext ("ApplicationContext.xml"); OxmDemo Converter = (OxmDemo); Cliente (); cliente.setName ("yiibai"); cliente.setflag (true); cliente.SetSex ("haikou haidiandao"); system.out.println ("convert objeto para xml!"); // de objeto para xml file converter.convertFortEsterTeTToxml! /n");Resultados do teste:
11 de maio de 2016 14:27:52 Org.springframework.context.support.classPathxmlapplicationContext PrepareRefresh Informações: refrescante org.springframework.Context.support.classpathpathMlaticClication.stringFramework.Context.Support.classpathpathpplicationContext@121BE2: Startup [WATDUPTUPTUPTUPTUMPTPATHXMATPAPLICATIONCONTEXT@121BE2: Startup [WEATPATPATPATPATPATHXPAPLACIONCONTEXTO12121BE2: Raiz da hierarquia de contexto 11 de maio de 2016 14:27:52 pm org.springframework.beans.factory.xml.xmlBeandEfinitionReader loadBeandEfinitions Informações: Carregando XML Definições de Bean do recurso de caminho [ApplicationContext.Xml] May 11, 2016.27:2.2 Pm do recurso Informações após oPROPERTIESSET: Configurado usando [Class Path Resource [mapping.xml]] Converta objeto em xml! Feito converter xml de volta em objeto! com.mdf.springox.customer@b419da Coned
Resumir
O exposto acima é tudo sobre o exemplo de entrada da primavera OXM neste artigo, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!