java | JavaBean监控

标签 java

在工作时,我需要检查 JavaBean(在我的例子中是表单 bean)中的值是否已更改。

通常在网络表单提交中,我们在更新/编辑流程中会遇到类似的情况。我们一般 在更新操作之前存储表单 bean 的 session ,并比较新提交的表单 bean 中的值。 这很简单,但会使代码困惑,并且在添加/修改属性时需要更改代码。

问题陈述:-

  1. 我有一个包含属性、基本类型、数组、其他类类型的类...

  2. 我有一个此类的对象。该对象通过一个方法可能会更改该对象的属性。

  3. 我如何透明地知道:-

a) 如果对象属性已更改。

b) 哪些属性发生了变化。

c) 添加属性更改事件监听器。

JDK有一个java.beans.PropertyChangeSupport这解决了这个问题。这工作得很好,但我认为可以用更好的方式来完成。

我想使用注释/反射向我的 POJO 声明添加“监控”功能。 例如:-

@Monitored
class UserFormBean{

  private String name;
  private UserAccount account;
}

此类应该具有与注入(inject)的方法类似的方法:-

public boolean hasChanged();

// null if not changed, old value if changed.
public Object hasChanged(String propName);

问题:-

1)是否有类似于我建议的现有 API?

2) 编写这样的 API 是个好主意吗?可行性?

最佳答案

1) Is there an exiting API similar to what I suggest?.

据我所知,没有。

2) Is it good idea to write such API ? Feasibility ?

AOP 可以帮助您做到这一点,但您无法在代码中调用 hasChanged(),因为该方法直到运行时才会存在。

你可以有这样的方法

boolean changed = Monitoring.hasChanged(myPojo);

关于 java | JavaBean监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758424/

相关文章:

java - 在java构造函数中有抽象类列表是非法的吗?

java - 在 RxJava 的 .flatMap() 运算符中处理两种不同类型

java - 致命异常: main cocos2Dx android app

java - Android Studio 权限拒绝

java - Java 中的非阻塞 ODBC 调用

java - 在 Apache POI Java 中将大数据转换为 Excel

java - Morphia 默认构造函数和 constructorArgs

java - 将多线程计算密集型作业移植到 Spark

java - java中如何将字符串转换为RegularTimePeriod?

java - 如何将唯一的 JComboBoxes 添加到 JTable 中的列 (Java)