記錄類(lèi)屬性狀態(tài) (PropertyState)

2018-12-24 21:51 更新

通過(guò)在類(lèi)成員變量上聲明@PropertyState注解,并使用PropertyStateSupport工具類(lèi)配合,便可以輕松實(shí)現(xiàn)對(duì)類(lèi)成員屬性的變化情況進(jìn)行監(jiān)控。

  • @PropertyState注解:聲明記錄類(lèi)成員屬性值的變化;

    propertyName:成員屬性名稱(chēng),默認(rèn)為空則采用當(dāng)前成員名稱(chēng);

    aliasName:自定義別名,默認(rèn)為空;

    setterName:成員屬性SET方法名稱(chēng),默認(rèn)為空;

  • 示例代碼:

    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("發(fā)生變更的字段名集合: " + Arrays.asList(_support.getChangedPropertyNames()));
            for (PropertyStateSupport.PropertyStateMeta _meta : _support.getChangedProperties()) {
                System.out.println("已將" + StringUtils.defaultIfBlank(_meta.getAliasName(), _meta.getPropertyName()) + "由" + _meta.getOriginalValue() + "變更為" + _meta.getNewValue());
            }
        }
    }
    
  • 執(zhí)行結(jié)果:

    發(fā)生變更的字段名集合: [user_name, age]
    已將user_name由123456變更為YMPer
    已將年齡由20變更為30
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)