簡體   English   中英

使用來自其他bean屬性的xml配置設置Spring bean屬性

[英]Spring bean property set using xml configuration from other bean property

我有兩個如下的bean類

package com.abc;

public class Employee{

private String id;
private String name;
//setters & getters
}

package com.cda;

public class EmployeeDTO{

private String id;
private String name;
//setters & getters
}

我想使用spring xml配置將Employee的屬性字段設置為EmployeeDTO。 數據是從其他一些來源到Employee對象的地方。

您能在這種情況下幫助我嗎?

請改用apache或spring框架中的BeanUtils。 注意這兩種方式的論點定位。 它們正好相反:

org.apache.commons.beanutils.BeanUtils.copyProperties(Object dest, Object orig)

要么

org.springframework.beans.BeanUtils.copyProperties(Object source, Object target)

這實際上不是spring為您完成的任務。 Spring更多的是關於在運行時將所有依賴的對象連接在一起。 您需要的是像mapstruct這樣的映射器,或在此處輸入鏈接描述

讓我們考慮一個場景,其中Employee從數據源獲取數據,現在您想將其映射到EmployeeDto。在這種情況下:

  1. 您可以在EmployeeDto中添加一個構造函數,該構造函數將Employee作為參數並映射字段
  2. 您可以在下面的簡單行中使用ModelMapperEmployeeDto employeeDto = modelMapper.map(employee, EmployeeDto.class); 將工作
  3. 使用BeanUtils import org.apache.commons.beanutils.BeanUtils; EmployeeDto newObject = new EmployeeDto(); BeanUtils.copyProperties(newObject, oldObject); import org.apache.commons.beanutils.BeanUtils; EmployeeDto newObject = new EmployeeDto(); BeanUtils.copyProperties(newObject, oldObject); 參考
  4. 通過convertValue()方法使用Jackson的ObjectMapper :(由於性能問題,不建議使用)

ObjectMapper mapper = new ObjectMapper(); Employee employee = ...; EmployeeDto employeeDto = mapper.convertValue(employee, EmployeeDto.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM