方法:使用AOP和Reflection修改复杂数据

时间:2014-03-07 13:42:56

标签: java spring aop spring-aop adaptive-design

我已将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返回学生后,根据Annotation修改学生对象及其中的所有复杂属性,  例如,如果请求来自移动设备,则将学生姓名修改为10 ,依此类推。

我能想到的方法:

  1. 递归迭代带注释的字段并修改字段。      每次对类字段进行迭代都很繁忙,因为类很复杂,可以嵌套n级。

  2. 在服务器启动时创建一个带注释的字段列表,然后在此列表上进行迭代并将更改应用于目标对象。

    我目前正在努力解决这两种方法。所以想知道是否存在一些预先构建的解决方案或设计模式来处理这种情况。

1 个答案:

答案 0 :(得分:0)

我实际上编写了基于反射的方法,并在一段时间后创建了一个库。

它使用反射来识别字段上的注释,然后根据输入设备采取适当的操作。

这是图书馆的链接 https://github.com/santoshjoshi/Adaptive-Device-Data-Filtering