클래스 속성 상태 기록(PropertyState)
클래스 멤버 변수에 @PropertyState
注解,并使用PropertyStateSupport
를 선언하고 도구 클래스를 사용하면 클래스 멤버 속성의 변경 사항을 쉽게 모니터링할 수 있습니다.
@PropertyState 주석: 레코드 클래스 멤버 속성 값의 변경을 선언합니다.
propertyName: 멤버 속성 이름, 기본적으로 비어 있으면 현재 멤버 이름이 사용됩니다.
aliasName: 사용자 정의 별칭
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()); } } }
실행 결과:
发生变更的字段名集合: [user_name, age] 已将user_name由123456变更为YMPer 已将年龄由20变更为30