クラスのプロパティの状態を記録する (PropertyState)


クラスメンバー変数で@PropertyState注解,并使用PropertyStateSupportを宣言し、ツールクラスを使用することで、クラスメンバー属性の変更を簡単に監視できます。

  • @PropertyState アノテーション: クラス メンバーのプロパティ値の変更を記録する宣言。

    propertyName: メンバーのプロパティ名。デフォルトで空の場合、現在のメンバー名が使用されます。デフォルトでは空です。

    setterName : メンバー属性 SET メソッド名、デフォルトでは空です。

    public class PropertyStateTest {
    
        @PropertyState(propertyName = "user_name")
        private String username;
    
        @PropertyState(aliasName = "年龄")
        private int age;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public static void main(String[] args) throws Exception {
            PropertyStateTest _original = new PropertyStateTest();
            _original.setUsername("123456");
            _original.setAge(20);
            //
            PropertyStateSupport<PropertyStateTest> _support = PropertyStateSupport.create(_original);
            PropertyStateTest _new = _support.bind();
            _new.setUsername("YMPer");
            _new.setAge(30);
            //
            System.out.println("发生变更的字段名集合: " + Arrays.asList(_support.getChangedPropertyNames()));
            for (PropertyStateSupport.PropertyStateMeta _meta : _support.getChangedProperties()) {
                System.out.println("已将" + StringUtils.defaultIfBlank(_meta.getAliasName(), _meta.getPropertyName()) + "由" + _meta.getOriginalValue() + "变更为" + _meta.getNewValue());
            }
        }
    }