我有一些层次结构相互依赖的模型,换句话说,User
模型具有类型为Personnel
模型的属性,Personnel
模型具有类型为{的属性{1}}等等。如下所示:
用户>人员>组织结构> OrganizationType
安全&性能问题,我想选择一些属性以OrganizationStructure
格式返回 Spring MVC REST ;所以我使用json
并将此注释放在我想要返回的属性上。
根据this tutorial,我使用此注释,如下所示: JsonView的类:
@JsonView
查看OrganizationStructure的模型:
public class View {
public interface Summary {}
public interface SummaryWithRecipients extends Summary {}
}
并查看人员的模型:
public class OrganizationStructureViewModel extends BaseEntityViewModel<Long> {
@JsonView(View.Summary.class)
private String title;
private String description;
@JsonView(View.SummaryWithRecipients.class)
private Set<UserViewModel> users;
}
但我不想将 public class PersonnelViewModel extends BaseEntityViewModel<Long> {
@JsonView(View.Summary.class)
private String username;
@JsonView(View.Summary.class)
private String firstname;
@JsonView(View.Summary.class)
private String lastname;
private String email;
private String password;
}
放入内部模型(例如@JsonView
&amp; OrganizationStructure
模型),因为我无法直接访问这些模型以放置{{1他们的属性。另一方面,这些模型在我的项目中非常有用,对于每个视图我都必须单独放置OrganizationType
,并且这些模型的属性上的注释数量太高。
一个解决方案是使用 Dozer-Mapper 并在@JsonView
中描述预期属性并使用@JsonView
,但xml file
的许多属性几乎都是域模型重复。这是我的Dozer-Mapper XML配置:
人员的Dozer-Mapper XML配置:
ModelView
和OrganizationStructure的Dozer-Mapper XML配置看起来像Personnel。
是否只在一个地方描述预期的财产并使用它?有些东西,比如没有ModelView
的Dozer-Mapper,或者可能只有一个主模型的<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="...">
<mapping>
<class-a>org.somepackages.personnel.Personnel</class-a>
<class-b>org.somepackages.personnel.PersonnelViewModel</class-b>
<!-- Here is some fileds that I want to map from model to view model -->
</mapping>
</mappings>
(在我的情况下是ViewModel
模型)?