java方法:使用AOP和反射修改复杂数据
我已将spring应用程序配置如下:
// Spring MVC controller
@Controller
HelloController {
@ResponseBody
Student getData() {
return student from database;
}
}
public Class Student {
@Trim(device = "mob", trim=10)
@Trim(device = "desktop", trim=100)
String name ;
Address address;
}
public class Address {
@Trim(device = "mob", trim=10 )
@Trim(device = "desktop", trim=100 )
String addressInfo
}
要求:
在Controller
返回Student之后,根据Annotation
修改Student对象及其内部的所有复杂属性,
例如,如果请求来自移动设备,请将学生姓名修剪为10,依此类推
我能想到的方法:
使用注释和修改字段对字段进行递归迭代。 每次对类字段的迭代都可能非常繁忙,因为类很复杂,可以嵌套多达n个级别
在服务器启动时创建一个带注释字段的列表,然后在该列表上迭代,并将更改应用于目标对象
我目前正在两种方法中苦苦挣扎。所以我想知道是否存在一些预构建的解决方案或设计模式来处理此类场景
# 1 楼答案
我实际上编写了基于反射的方法,并在不久前创建了一个库
它使用反射来识别字段上的注释,然后根据输入设备采取适当的操作
这是图书馆的链接 https://github.com/santoshjoshi/Adaptive-Device-Data-Filtering