当前位置: 首页 > news >正文

淘宝客怎么做自己网站推广今天的新闻大事10条

淘宝客怎么做自己网站推广,今天的新闻大事10条,地址链接怎么生成,wordpress没小工具jaxb 映射 空字段Dozer是开放源代码#xff08; Apache 2许可 #xff09;“ Java Bean到Java Bean映射器#xff0c;可将数据从一个对象递归复制到另一个对象”。 正如从其主页上的描述所描述的那样#xff0c;它用于映射两个JavaBeans实例#xff0c;以在实例之间进行自… jaxb 映射 空字段 Dozer是开放源代码 Apache 2许可 “ Java Bean到Java Bean映射器可将数据从一个对象递归复制到另一个对象”。 正如从其主页上的描述所描述的那样它用于映射两个JavaBeans实例以在实例之间进行自动数据复制。 尽管这些可以是多种JavaBeans实例中的任何一种但我将重点介绍如何使用Dozer将JAXB生成的对象映射到“业务数据对象”有时称为“域对象”。 在使用Java XML绑定体系结构 JAXB 的Java应用程序中开发人员编写特定的业务或域对象供应用程序本身使用而仅使用JAXB生成的对象进行读取解组和写入操作这是很常见的 。 编组XML。 尽管将JAXB生成的对象本身用作业务/域对象具有一定的吸引力 DRY 但是这种方法存在一些缺点。 JAXB生成的类没有toString equalsObject或hashCode实现这使得这些生成的类不适合用于许多类型的集合中除身份比较之外不适合比较并且不便于记录其内容。 在对生成的类进行生成后对其进行手动编辑很麻烦并且即使对源XSD进行了很小的更改也不利于再次生成JAXB类。 尽管可以使用JAXB2 Basics来确保JAXB生成的类具有在集合中使用在比较中使用以及记录其内容所需的一些常用方法但是使用JAXB生成的类作为domain /业务对象是业务逻辑与XSD紧密结合的必然结果。 XSD中的模式更改例如版本更新通常会导致通过JAXB从该XSD生成的类的包结构不同。 然后不同的包结构将强制所有导入那些JAXB生成的类的代码来更改其导入语句。 对XSD的内容更改可能会产生更大的影响从而影响JAXB类的get / set方法如果将JAXB类用于域/业务对象则该方法会散布在整个应用程序中。 假设决定不使用JAXB生成的类作为业务/域类有多种方法可以通过代码或配置中描述的“映射层”将生成的JAXB类映射到定义业务/域对象的类。 为了演示两个基于代码的映射层的实现并演示基于Dozer的映射层我介绍了JAXB生成的类和定制构建的业务/域类的一些简单示例。 本文的示例的第一部分是XSD将从中指示JAXBx xjc到通用类以将其编组到该XSD所描述的XML或从该XSD所描述的XML解组。 接下来显示的XSD定义了一个Person元素该元素可以具有嵌套的MailingAddress和ResidentialAddress元素以及两个用于名字和姓氏的String属性。 还要注意主要名称空间是http://marxsoftware.blogspot.com/JAXB将使用它来确定从该XSD生成的类的Java包层次结构。 人格 ?xml version1.0? xs:schema version1.0xmlns:xshttp://www.w3.org/2001/XMLSchemaxmlns:marxhttp://marxsoftware.blogspot.com/targetNamespacehttp://marxsoftware.blogspot.com/elementFormDefaultqualifiedxs:element namePerson typemarx:PersonType /xs:complexType namePersonTypexs:sequencexs:element nameMailingAddress typemarx:AddressType /xs:element nameResidentialAddress typemarx:AddressType minOccurs0 //xs:sequencexs:attribute namefirstName typexs:string /xs:attribute namelastName typexs:string //xs:complexTypexs:complexType nameAddressTypexs:attribute namestreetAddress1 typexs:string userequired /xs:attribute namestreetAddress2 typexs:string useoptional /xs:attribute namecity typexs:string userequired /xs:attribute namestate typexs:string userequired /xs:attribute namezipcode typexs:string userequired //xs:complexType/xs:schema 当针对上述XSD执行xjc Oracle JDK随附的JAXB编译器时在com / blogspot / marxsoftware目录从XSD的名称空间派生中生成以下四个类 AddressType.java PersonType.java ObjectFactory.java和package-info.java 。 接下来的两个代码清单是JAXB生成的两个主要感兴趣的类 PersonType.java和AddressType.java 。 在此处显示它们的主要目的是提醒他们它们缺少我们经常需要我们的业务/域类拥有的方法。 JAXB生成的PersonType.java // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See http://java.sun.com/xml/jaxb // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2013.12.03 at 11:44:32 PM MST //package com.blogspot.marxsoftware;import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType;/*** pJava class for PersonType complex type.* * pThe following schema fragment specifies the expected content contained within this class.* * pre* complexType namePersonType* complexContent* restriction base{http://www.w3.org/2001/XMLSchema}anyType* sequence* element nameMailingAddress type{http://marxsoftware.blogspot.com/}AddressType/* element nameResidentialAddress type{http://marxsoftware.blogspot.com/}AddressType minOccurs0/* /sequence* attribute namefirstName type{http://www.w3.org/2001/XMLSchema}string /* attribute namelastName type{http://www.w3.org/2001/XMLSchema}string /* /restriction* /complexContent* /complexType* /pre* * */ XmlAccessorType(XmlAccessType.FIELD) XmlType(name PersonType, propOrder {mailingAddress,residentialAddress }) public class PersonType {XmlElement(name MailingAddress, required true)protected AddressType mailingAddress;XmlElement(name ResidentialAddress)protected AddressType residentialAddress;XmlAttribute(name firstName)protected String firstName;XmlAttribute(name lastName)protected String lastName;/*** Gets the value of the mailingAddress property.* * return* possible object is* {link AddressType }* */public AddressType getMailingAddress() {return mailingAddress;}/*** Sets the value of the mailingAddress property.* * param value* allowed object is* {link AddressType }* */public void setMailingAddress(AddressType value) {this.mailingAddress value;}/*** Gets the value of the residentialAddress property.* * return* possible object is* {link AddressType }* */public AddressType getResidentialAddress() {return residentialAddress;}/*** Sets the value of the residentialAddress property.* * param value* allowed object is* {link AddressType }* */public void setResidentialAddress(AddressType value) {this.residentialAddress value;}/*** Gets the value of the firstName property.* * return* possible object is* {link String }* */public String getFirstName() {return firstName;}/*** Sets the value of the firstName property.* * param value* allowed object is* {link String }* */public void setFirstName(String value) {this.firstName value;}/*** Gets the value of the lastName property.* * return* possible object is* {link String }* */public String getLastName() {return lastName;}/*** Sets the value of the lastName property.* * param value* allowed object is* {link String }* */public void setLastName(String value) {this.lastName value;}} JAXB生成的AddressType.java // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 // See http://java.sun.com/xml/jaxb // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2013.12.03 at 11:44:32 PM MST //package com.blogspot.marxsoftware;import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType;/*** pJava class for AddressType complex type.* * pThe following schema fragment specifies the expected content contained within this class.* * pre* complexType nameAddressType* complexContent* restriction base{http://www.w3.org/2001/XMLSchema}anyType* attribute namestreetAddress1 userequired type{http://www.w3.org/2001/XMLSchema}string /* attribute namestreetAddress2 type{http://www.w3.org/2001/XMLSchema}string /* attribute namecity userequired type{http://www.w3.org/2001/XMLSchema}string /* attribute namestate userequired type{http://www.w3.org/2001/XMLSchema}string /* attribute namezipcode userequired type{http://www.w3.org/2001/XMLSchema}string /* /restriction* /complexContent* /complexType* /pre* * */ XmlAccessorType(XmlAccessType.FIELD) XmlType(name AddressType) public class AddressType {XmlAttribute(name streetAddress1, required true)protected String streetAddress1;XmlAttribute(name streetAddress2)protected String streetAddress2;XmlAttribute(name city, required true)protected String city;XmlAttribute(name state, required true)protected String state;XmlAttribute(name zipcode, required true)protected String zipcode;/*** Gets the value of the streetAddress1 property.* * return* possible object is* {link String }* */public String getStreetAddress1() {return streetAddress1;}/*** Sets the value of the streetAddress1 property.* * param value* allowed object is* {link String }* */public void setStreetAddress1(String value) {this.streetAddress1 value;}/*** Gets the value of the streetAddress2 property.* * return* possible object is* {link String }* */public String getStreetAddress2() {return streetAddress2;}/*** Sets the value of the streetAddress2 property.* * param value* allowed object is* {link String }* */public void setStreetAddress2(String value) {this.streetAddress2 value;}/*** Gets the value of the city property.* * return* possible object is* {link String }* */public String getCity() {return city;}/*** Sets the value of the city property.* * param value* allowed object is* {link String }* */public void setCity(String value) {this.city value;}/*** Gets the value of the state property.* * return* possible object is* {link String }* */public String getState() {return state;}/*** Sets the value of the state property.* * param value* allowed object is* {link String }* */public void setState(String value) {this.state value;}/*** Gets the value of the zipcode property.* * return* possible object is* {link String }* */public String getZipcode() {return zipcode;}/*** Sets the value of the zipcode property.* * param value* allowed object is* {link String }* */public void setZipcode(String value) {this.zipcode value;}} 在JAXB生成的对象和自定义编写的业务/域对象之间复制数据的一种常见而直接的策略是使用一个对象的“ get”方法并将其返回值传递给另一个对象的“ set”方法。 例如在将XML解组/读取到应用程序的过程中可以将JAXB生成的对象上调用的“ get”方法的结果传递给业务/域对象的“ set”方法。 相反通过将域/业务对象上的“ get”方法的结果传递给JAXB生成的对象的相应“ set”方法可以轻松完成编组/编写XML。 下一个代码清单用于PersonCoverter.java并说明了此方法的一种实现。 PersonConverter.java package dustin.examples.dozerdemo;import com.blogspot.marxsoftware.AddressType; import com.blogspot.marxsoftware.ObjectFactory; import com.blogspot.marxsoftware.PersonType; import dustin.examples.Address; import dustin.examples.Person;/*** Static functions for converting between JAXB-generated objects and domain* objects.* * author Dustin*/ public class PersonConverter {/*** Extract business object {link dustin.examples.Person} from the JAXB* generated object {link com.blogspot.marxsoftware.PersonType}.* * param personType JAXB-generated {link com.blogspot.marxsoftware.PersonType}* from which to extract {link dustin.examples.Person} object.* return Instance of {link dustin.examples.Person} based on the provided* {link com.blogspot.marxsoftware.PersonType}.*/public static Person extractPersonFromPersonType(final PersonType personType){final String lastName personType.getLastName();final String firstName personType.getFirstName();final Address residentialAddress extractAddressFromAddressType(personType.getResidentialAddress());final Address mailingAddress extractAddressFromAddressType(personType.getMailingAddress());return new Person(lastName, firstName, residentialAddress, mailingAddress);}/*** Extract business object {link dustin.examples.Address} from the JAXB* generated object {link com.blogspot.marxsoftware.AddressType}.* * param addressType JAXB-generated {link com.blogspot.marxsoftware.AddressType}* from which to extract {link dustin.examples.Address} object.* return Instance of {link dustin.examples.Address} based on the provided* {link com.blogspot.marxsoftware.AddressType}.*/public static Address extractAddressFromAddressType(final AddressType addressType){return new Address(addressType.getStreetAddress1(), addressType.getStreetAddress2(),addressType.getCity(), addressType.getState(), addressType.getZipcode());}/*** Extract an instance of {link com.blogspot.marxsoftware.PersonType} from* an instance of {link dustin.examples.Person}.* * param person Instance of {link dustin.examples.Person} from which* instance of JAXB-generated {link com.blogspot.marxsoftware.PersonType}* is desired.* return Instance of {link com.blogspot.marxsoftware.PersonType} based on* provided instance of {link dustin.examples.Person}.*/public static PersonType extractPersonTypeFromPerson(final Person person){final ObjectFactory objectFactory new ObjectFactory();final AddressType residentialAddressType extractAddressTypeFromAddress(person.getResidentialAddress());final AddressType mailingAddressType extractAddressTypeFromAddress(person.getMailingAddress());final PersonType personType objectFactory.createPersonType();personType.setLastName(person.getLastName());personType.setFirstName(person.getFirstName());personType.setResidentialAddress(residentialAddressType);personType.setMailingAddress(mailingAddressType);return personType;}/*** Extract an instance of {link com.blogspot.marxsoftware.AddressType} from* an instance of {link dustin.examples.Address}.* * param address Instance of {link dustin.examples.Address} from which* instance of JAXB-generated {link com.blogspot.marxsoftware.AddressType}* is desired.* return Instance of {link com.blogspot.marxsoftware.AddressType} based on* provided instance of {link dustin.examples.Address}.*/public static AddressType extractAddressTypeFromAddress(final Address address){final ObjectFactory objectFactory new ObjectFactory();final AddressType addressType objectFactory.createAddressType();addressType.setStreetAddress1(address.getStreetAddress1());addressType.setStreetAddress2(address.getStreetAddress2());addressType.setCity(address.getMunicipality());addressType.setState(address.getState());addressType.setZipcode(address.getZipCode());return addressType;} } 最后的代码清单演示了一种通用的第三方类方法用于在JAXB生成的对象和域/业务对象之间双向复制数据。 另一种方法是将这种复制功能构建到域/业务对象本身中。 这在PersonPlus.java和AddressPlus.java两个代码清单中PersonPlus.java 它们是先前介绍的Person.java和Address.java版本并添加了对从JAXB生成的对象复制数据的支持。 为了方便起见我在toString实现之后将新方法添加到类的底部。 PersonPlus.java package dustin.examples;import com.blogspot.marxsoftware.ObjectFactory; import com.blogspot.marxsoftware.PersonType; import java.util.Objects;/*** Person class enhanced to support copying to/from JAXB-generated PersonType.* * author Dustin*/ public class PersonPlus {private String lastName;private String firstName;private AddressPlus mailingAddress;private AddressPlus residentialAddress;public PersonPlus(final String newLastName,final String newFirstName,final AddressPlus newResidentialAddress,final AddressPlus newMailingAddress){this.lastName newLastName;this.firstName newFirstName;this.residentialAddress newResidentialAddress;this.mailingAddress newMailingAddress;}public String getLastName(){return this.lastName;}public void setLastName(String lastName) {this.lastName lastName;}public String getFirstName(){return this.firstName;}public void setFirstName(String firstName){this.firstName firstName;}public AddressPlus getMailingAddress(){return this.mailingAddress;}public void setMailingAddress(AddressPlus mailingAddress){this.mailingAddress mailingAddress;}public AddressPlus getResidentialAddress(){return this.residentialAddress;}public void setResidentialAddress(AddressPlus residentialAddress){this.residentialAddress residentialAddress;}Overridepublic int hashCode(){int hash 3;hash 19 * hash Objects.hashCode(this.lastName);hash 19 * hash Objects.hashCode(this.firstName);hash 19 * hash Objects.hashCode(this.mailingAddress);hash 19 * hash Objects.hashCode(this.residentialAddress);return hash;}Overridepublic boolean equals(Object obj){if (obj null){return false;}if (getClass() ! obj.getClass()){return false;}final PersonPlus other (PersonPlus) obj;if (!Objects.equals(this.lastName, other.lastName)){return false;}if (!Objects.equals(this.firstName, other.firstName)){return false;}if (!Objects.equals(this.mailingAddress, other.mailingAddress)){return false;}if (!Objects.equals(this.residentialAddress, other.residentialAddress)){return false;}return true;}Overridepublic String toString() {return PersonPlus{ lastName lastName , firstName firstName , mailingAddress mailingAddress , residentialAddress residentialAddress };}/*** Provide a JAXB-generated instance of {link com.blogspot.marxsoftware.PersonType}* that corresponds to me.* * return Instance of {link com.blogspot.marxsoftware.PersonType} that* corresponds to me.*/public PersonType toPersonType(){final ObjectFactory objectFactory new ObjectFactory();final PersonType personType objectFactory.createPersonType();personType.setFirstName(this.firstName);personType.setLastName(this.lastName);personType.setResidentialAddress(this.residentialAddress.toAddressType());personType.setMailingAddress(this.mailingAddress.toAddressType());return personType;}/*** Provide instance of {link dustin.examples.PersonPlus} corresponding* to the provided instance of JAXB-generated object* {link com.blogspot.marxsoftware.PersonType}.* * param personType Instance of JAXB-generated object* {link com.blogspot.marxsoftware.PersonType}.* return Instance of me corresponding to provided JAXB-generated object* {link com.blogspot.marxsoftware.PersonType}.*/public static PersonPlus fromPersonType(final PersonType personType){final AddressPlus residentialAddress AddressPlus.fromAddressType(personType.getResidentialAddress());final AddressPlus mailingAddress AddressPlus.fromAddressType(personType.getMailingAddress());return new PersonPlus(personType.getLastName(), personType.getFirstName(),residentialAddress, mailingAddress);} } AddressPlus.java package dustin.examples;import com.blogspot.marxsoftware.AddressType; import com.blogspot.marxsoftware.ObjectFactory; import java.util.Objects;/*** Address class with support for copying to/from JAXB-generated class* {link com.blogspot.marxsoftware.AddressType}.* * author Dustin*/ public class AddressPlus {private String streetAddress1;private String streetAddress2;private String municipality;private String state;private String zipCode;public AddressPlus(final String newStreetAddress1,final String newStreetAddress2,final String newMunicipality,final String newState,final String newZipCode){this.streetAddress1 newStreetAddress1;this.streetAddress2 newStreetAddress2;this.municipality newMunicipality;this.state newState;this.zipCode newZipCode;}public String getStreetAddress1(){return this.streetAddress1;}public void setStreetAddress1(String streetAddress1){this.streetAddress1 streetAddress1;}public String getStreetAddress2(){return this.streetAddress2;}public void setStreetAddress2(String streetAddress2){this.streetAddress2 streetAddress2;}public String getMunicipality(){return this.municipality;}public void setMunicipality(String municipality){this.municipality municipality;}public String getState() {return this.state;}public void setState(String state){this.state state;}public String getZipCode() {return this.zipCode;}public void setZipCode(String zipCode){this.zipCode zipCode;}Overridepublic int hashCode(){return Objects.hash(this.streetAddress1, this.streetAddress2, this.municipality,this.state, this.zipCode);}Overridepublic boolean equals(Object obj){if (obj null) {return false;}if (getClass() ! obj.getClass()) {return false;}final AddressPlus other (AddressPlus) obj;if (!Objects.equals(this.streetAddress1, other.streetAddress1)){return false;}if (!Objects.equals(this.streetAddress2, other.streetAddress2)){return false;}if (!Objects.equals(this.municipality, other.municipality)){return false;}if (!Objects.equals(this.state, other.state)){return false;}if (!Objects.equals(this.zipCode, other.zipCode)){return false;}return true;}Overridepublic String toString(){return Address{ streetAddress1 streetAddress1 , streetAddress2 streetAddress2 , municipality municipality , state state , zipCode zipCode };}/*** Provide a JAXB-generated instance of {link com.blogspot.marxsoftware.AddressType}* that corresponds to an instance of me.** return Instance of JAXB-generated {link com.blogspot.marxsoftware.AddressType}* that corresponds to me.*/public AddressType toAddressType(){final ObjectFactory objectFactory new ObjectFactory();final AddressType addressType objectFactory.createAddressType();addressType.setStreetAddress1(this.streetAddress1);addressType.setStreetAddress2(this.streetAddress2);addressType.setCity(this.municipality);addressType.setState(this.state);addressType.setZipcode(this.zipCode);return addressType;}/*** Provide instance of {link dustin.examples.AddressPlus} corresponding* to the provided instance of JAXB-generated object* {link com.blogspot.marxsoftware.AddressType}.* * param addressType Instance of JAXB-generated object* {link com.blogspot.marxsoftware.AddressType}.* return Instance of me corresponding to provided JAXB-generated object* {link com.blogspot.marxsoftware.AddressType}.*/public static AddressPlus fromAddressType(final AddressType addressType){return new AddressPlus(addressType.getStreetAddress1(),addressType.getStreetAddress2(),addressType.getCity(),addressType.getState(),addressType.getZipcode());} } 上面演示的将JAXB生成的对象映射到业务/域对象的两种方法肯定会起作用对于我的简单示例可以将其视为最佳的使用方法尤其是考虑到NetBeans使业务/域对象的生成几乎变得微不足道。 但是对于需要映射的更重要的对象层次结构可以认为基于Dozer配置的映射是更可取的。 从下载页面 在此情况下为dozer-5.3.2.jar 下载了Dozer。 “ 入门”页面显示当要映射的类的属性具有相同的名称时映射确实非常容易最小配置。 在我的示例中情况并非如此我故意将一个属性设为“城市”将另一个属性设为“市政性”以使映射更加有趣。 由于这些名称不同因此我需要自定义Dozer映射 这是通过XML映射配置完成的。 必要的映​​射文件以dozerBeanMapping.xml的“默认映射名称”命名并在下面显示。 我只需要映射两个具有不同名称的字段 city和municipality 因为被映射的两个类的所有其他字段都具有相同的名称并且无需显式配置即可自动映射在一起。 dozerBeanMapping.xml ?xml version1.0 encodingUTF-8? mappings xmlnshttp://dozer.sourceforge.netxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://dozer.sourceforge.nethttp://dozer.sourceforge.net/schema/beanmapping.xsdconfigurationstop-on-errorstrue/stop-on-errorsdate-formatMM/dd/yyyy HH:mm:ss/date-formatwildcardtrue/wildcard/configurationmappingclass-adustin.examples.Address/class-aclass-bcom.blogspot.marxsoftware.AddressType/class-bfieldamunicipality/abcity/b/field/mapping /mappings 请注意 XML并非可用于自定义Dozer映射的唯一方法 。 还支持注释和程序化API 。 “ Dozer 第三方对象工厂”页面简要介绍了如何将Dozer与JAXB以及JAXBBeanFactory一起使用。 还建议将推土器与Dozer一起使用并提供Spring集成示例。 对于应用Dozer的简单示例我没有使用这些方法而是使用了非常简单的实例化方法。 这显示在下一个代码清单中。 DozerPersonConverter.java package dustin.examples.dozerdemo;import com.blogspot.marxsoftware.PersonType; import dustin.examples.Person; import java.util.ArrayList; import java.util.List; import org.dozer.DozerBeanMapper;/*** Dozer-based converter.* * author Dustin*/ public class DozerPersonConverter {static final DozerBeanMapper mapper new DozerBeanMapper();static{final ListString mappingFilesNames new ArrayList();mappingFilesNames.add(dozerBeanMapping.xml);mapper.setMappingFiles(mappingFilesNames);}/*** Provide an instance of {link com.blogspot.marxsoftware.PersonType}* that corresponds with provided {link dustin.examples.Person} as* mapped by Dozer Mapper.* * param person Instance of {link dustin.examples.Person} from which* {link com.blogspot.marxsoftware.PersonType} will be extracted.* return Instance of {link com.blogspot.marxsoftware.PersonType} that* is based on provided {link dustin.examples.Person} instance.*/public PersonType copyPersonTypeFromPerson(final Person person){final PersonType personType mapper.map(person, PersonType.class);return personType;}/*** Provide an instance of {link dustin.examples.Person} that corresponds* with the provided {link com.blogspot.marxsoftware.PersonType} as * mapped by Dozer Mapper.* * param personType Instance of {link com.blogspot.marxsoftware.PersonType}* from which {link dustin.examples.Person} will be extracted.* return Instance of {link dustin.examples.Person} that is based on the* provided {link com.blogspot.marxsoftware.PersonType}.*/public Person copyPersonFromPersonType(final PersonType personType){final Person person mapper.map(personType, Person.class);return person;} } 前面的示例显示了将JAXB生成的对象映射到业务/域对象所需的代码量。 当然需要一些XML但仅适用于名称不同的字段。 这意味着字段名称之间的差异越大就需要进行更多的配置。 但是只要大多数字段是一对一映射的并且它们之间没有任何特殊的“转换”逻辑Dozer就会用配置映射替换许多繁琐的代码。 如果需要转换字段例如将一个对象中的米转换为另一对象中的公里则当必须编写自定义转换器时此映射支持可能会不太吸引人。 推土机映射也很难更正确地应用于深层嵌套的对象但是我的示例在Person嵌套了Address作为一个简单示例。 尽管复杂的映射在Dozer中可能不再那么吸引人但是JAXB生成的对象到业务/域对象的许多映射都足够简单足以被Dozer服务。 我想在这篇文章中指出的最后一件事是Dozer对某些第三方库具有运行时依赖性。 幸运的是这些库无论如何都经常在Java项目中使用并且随时可用。 如下面的两个图像所示所需的运行时依赖项是SLF4JApache Commons LangApache Commons Logging和Apache BeanUtils。 推土机运行时相关性页面 本文的示例的NetBeans 7.4项目库 设置Dozer及其依赖项并配置映射需要花费很少的精力但是在许多常见的JAXB到企业对象数据复制应用程序中可以通过大大减少映射代码来很好地回报这种努力。 参考 推土机来自JCG合作伙伴 Dustin Marx的“ 实际事件的启发”博客中的JAXB对象到业务/域对象的映射 。 翻译自: https://www.javacodegeeks.com/2013/12/dozer-mapping-jaxb-objects-to-businessdomain-objects.htmljaxb 映射 空字段
http://wiki.neutronadmin.com/news/163402/

相关文章:

  • 贷款网站建设方案中智软件开发有限公司
  • 高端模板建站报价wordpress管理网站
  • 网站制作新手烟台网站制作厂家电话
  • 企业网站属于哪种网站类型游戏网站网页模板html
  • 旅游网站策划书西安公司团建活动好去处
  • 医院网站 行风建设合肥做网站的的公司
  • 家教网站建设模板湘潭网站建设 磐石网络最好
  • 深圳专业建站公司技术好百度大数据中心
  • 网站建设技术概述淮安网站建设公司
  • 绵阳网站建设价格企业策划书范文
  • 济南网站建站模板wordpress 团队 主题
  • 网站建设整改情况汇报怎么才可以做网站
  • 自己做企业网站详细流程免费ppt免费模板官网
  • 长春火车站有几个互联网营销师培训
  • 课程网站资源建设小结东莞做网站
  • 网站如何备案要关站吗网站构建的基本流程
  • 如何做个网站推广自己产品佛山微网站建设哪家专业
  • 衡阳做淘宝网站与做机器人有关的网站
  • 网站建设属于什么经营类型寺庙网站开发策划书
  • 规划网站的思路wordpress开发工作
  • 保健品手机网站模板什么网站可以做数据图
  • 福州思企互联网站建设公司怎么样携程网站联盟
  • 个人做网站的必要性linux 转换wordpress
  • 哈尔滨网站开发企业成都企业网站设计制作
  • 网站改完域名打开速度慢wordpress手机怎么使用
  • 网站搭建的网页制作 培训
  • 合肥网站优化平台wordpress post_content
  • 自己做烘焙的网站3d溜溜网室内设计图库
  • 义乌做公司网站怎样制作自己公司的网站
  • 镇江网站建设设计个人crm