您可以在字段上使用自定义注释,即:接口@PleaseIgnoreThis,在您想要区别对待的每个字段上包含该注释,然后使用反射创建一个简单的方法以从响应中排除这些注释。
实体:
MyEnity {
@PleaseIgnoreThis
long id = 123;
String name = "the name";
String attr = "some value"
}
注解接口:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface PleaseIgnoreThis {}
示例方法:
Map<Object, Object> excludeTheseFromResponse(Object object) {
Map<Object, Object>() map = new HashMap<>();
for(Field f in object class) {
if f does not have annotation PleaseIgnoreThis
add it to the map (name, value)
}
return map;
}
在控制器中:
@RequestMapping(value="/somePath/{maybe_some_id})
Object getSomeEntity(id) {
return myRepository.findById(id));
}
返回 -> {
“身份证”:123,
“名称”:“名称”,
“attr”:“一些价值”
}
@RequestMapping(value="/somePath/{maybe_some_id})
Object getSomeEntity(id) {
return excludeTheseFromResponse(myRepository.findById(id));
}
返回 -> {
“名称”:“名称”,
“attr”:“一些价值”
}
注释可以包含一些额外的粒度值,并可用于根据授权或位置或一天中的时间更好地控制包含/排除的方式/内容...