java - 复杂的 Bean 映射

标签 java jakarta-ee javabeans java-6

我正在尝试找到最佳解决方案,以解决我在映射一个简单的 bean 结构时遇到的问题,该结构被发送到基于浏览器的 JavaScript 应用程序。当前的需求是在旧的 Java 后端管理大部分显示控件。目前我们有一个服务样式层,它正在生成没有内置显示逻辑的值对象,例如:

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

    public String getValue1(){...}
    public void setValue1(){...}
    ....
 }

我的目标是能够在所有字段上映射通用结构,以便它添加前端所需的新显示结构。我只想管理原始结构类(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) {...}
    ...
}

最终结果将如下所示,其中值等于原始结构中的值:

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

    public Presentable<String> getValue1(){...}
    public void setValue1(){...}
    ...
}

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

谢谢。

最佳答案

您基本上可以将 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 annotations

关于java - 复杂的 Bean 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584040/

相关文章:

java - SQL - 如何使用一个 SQL 查询返回多行?

java - 如何使用 Java 从 Windows 的前台窗口获取进程名称?

java - 在 Java 中将 XML 解码为对象 (Apache Camel)

java - Hibernate:脏检查和只更新脏属性?

tomcat - 部署到tomcat服务器时出现JPA错误

java - glassfish应用程序服务器中的Web服务器是什么?

java - 在 JavaEE 中对 URLConnection 使用当前用户身份验证

Eclipse 在部署 webapp 时忽略源

java - Mockito doThrow() 方法使我的测试因给定异常而失败

java - 错误: compareTo(Object) in Car cannot implement compareTo(T) in Comparable