Java - 将实体转换为 wsimport 对象

标签 java wsimport

在 SOAP 服务器上,我尝试将 Entities 类转换为 wsimport 生成的对象。 这些对象具有相同的 getter 和 setter,但我现在不知道如何将模型的 getter 注入(inject)到 wsimport 对象 setter

例如,我需要转换此模型:

package org.library.webservice.model;

public class User {

    private int id;
    private String firstname;
    private String lastname;
    private String email;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

}

到这个对象:

package org.library.webservice.service.generated.user;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "user", propOrder = {
        "email",
        "firstname",
        "id",
        "lastname",
        "password"
})
public class User {


    protected int id;
    protected String firstname;
    protected String lastname;
    protected String email;
    protected String password;

    /**
     * Obtient la valeur de la propriete email.
     *
     * @return possible object is
     * {@link String }
     */
    public String getEmail() {
        return email;
    }

    /**
     * Definit la valeur de la propriete email.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setEmail(String value) {
        this.email = value;
    }

    /**
     * Obtient la valeur de la propriete firstname.
     *
     * @return possible object is
     * {@link String }
     */
    public String getFirstname() {
        return firstname;
    }

    /**
     * Definit la valeur de la propriete firstname.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setFirstname(String value) {
        this.firstname = value;
    }

    /**
     * Obtient la valeur de la propriete id.
     */
    public int getId() {
        return id;
    }

    /**
     * Definit la valeur de la propriete id.
     */
    public void setId(int value) {
        this.id = value;
    }

    /**
     * Obtient la valeur de la propriete lastname.
     *
     * @return possible object is
     * {@link String }
     */
    public String getLastname() {
        return lastname;
    }

    /**
     * Definit la valeur de la propriete lastname.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setLastname(String value) {
        this.lastname = value;
    }

    /**
     * Obtient la valeur de la propriete password.
     *
     * @return possible object is
     * {@link String }
     */
    public String getPassword() {
        return password;
    }

    /**
     * Definit la valeur de la propriete password.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setPassword(String value) {
        this.password = value;
    }


}

我认为通用性和反身性是可能的,但我不知道该怎么做。

最佳答案

您需要的是使用 Java Bean-Bean 映射器,例如 Dozer 或 MapStruct。我使用过 MapStruct,它的设置和使用非常简单。

使用MapStruct,必须创建此接口(interface):

@Mapper
public interface UserMapper {

    UserMapper INSTANCE = Mappers.getMapper( UserMapper.class );

    org.library.webservice.service.generated.user.User toDto(org.library.webservice.model.User user);

    org.library.webservice.model.User toEntity(org.library.webservice.service.generated.user.User user);
}

这就是让它工作所需的一切(好吧,你必须使用maven并将mapstruct的注释处理器添加到插件中,但不编写用于转换的java代码是可以接受的),因为字段名称是相同的在这两个 bean 类中。

MapStruct 将生成正确的实现,您可以检查生成的源代码,它在目标文件夹中的行为是否符合您的预期,如果不是,您可以通过特定注释或使用装饰器类来更改工作方式,请检查文档为了它。

关于Java - 将实体转换为 wsimport 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787970/

相关文章:

java - RowFilter RegexFilter - 如何避免整数被转换为带逗号的字符串?

java - Java中的递归方法

java - 在理解生成的 JNI 头文件方面需要帮助

java - 如何通过 ssl 从 wsdl 生成 jax ws 工件

java - 如何调和 Java Web 服务中原始文件和生成文件之间的冲突?

java wsimport 字符串

java - 如何在java中将时间戳转换为时分秒

java - "Whitelisting by IP Address (Server-side applications)"用于 Google 云存储 JSON API

java - 无法通过 wsimport 生成的源中的类路径方案获取 URL 的资源

java - 找不到参数的方法 jaxws() [com.sun.xml.ws :jaxws-tools:2. 1.4]