在工作时,我需要检查 JavaBean(在我的例子中是表单 bean)中的值是否已更改。
通常在网络表单提交中,我们在更新/编辑流程中会遇到类似的情况。我们一般 在更新操作之前存储表单 bean 的 session ,并比较新提交的表单 bean 中的值。 这很简单,但会使代码困惑,并且在添加/修改属性时需要更改代码。
问题陈述:-
我有一个包含属性、基本类型、数组、其他类类型的类...
我有一个此类的对象。该对象通过一个方法可能会更改该对象的属性。
我如何透明地知道:-
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/