复杂Bean映射

roc*_*all 13 java javabeans java-ee java-6

我试图找到一个问题的最佳解决方案,我将映射一个简单的bean结构映射到基于浏览器的JavaScript应用程序.当前的要求是管理旧Java后端的大部分显示控制.目前我们有一个服务样式层,它生成的值对象没有内置的显示逻辑,如:

public class Example1 {
    String value1;
    Boolean value2;
    Example3 value3;

    public String getValue1(){...}
    public void setValue1(){...}
    ....
 }
Run Code Online (Sandbox Code Playgroud)

我的目标是能够在所有字段上映射通用结构,以便添加前端所需的新显示结构.我想只管理原始结构类(Example1类)结构,只需在包装器中将额外值设置为旧服务层.

通用结构将采用以下类的形式:

public class Presentable<T> {
    T value;
    boolean visible = true; 
    boolean mandatory = false;
    List<String> errors = new ArrayList<>();

    public T getValue() {...}
    public void setValue(T value) {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

最终结果类似于以下内容,其中value等于原始结构中的值:

public class Example2{
    Presentable<String> value1;
    Presentable<Boolean> value2;
    Presentable<Example3> value3;

    public Presentable<String> getValue1(){...}
    public void setValue1(){...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

没有编写Example2样式类并复制每个值,是否有解决此问题的方法?我愿意修改Example1类,因为它不会影响旧服务的使用者.

谢谢.

g.a*_*ata 4

您基本上可以将 AOP(面向方面​​编程)与 Spring 结合使用。在 Spring 上,您可以使用您需要的额外信息创建一个代理对象。好的起点是: http://www.mkyong.com/spring3/spring-aop-aspectj-annotation-example/

面向方面编程的官方页面: http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/aop.html

这个示例/答案可能很有用: Intercepting method with Spring AOP using only comments