- 注解
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Trim {
}
- 注解解析器
@Slf4j
public class TrimResolver implements FieldResolver {
/**
* 遍历传入对象的属性(Field),
* <p>
* 如果持有 {@link Trim @Trim} 注解,修剪字符串开头和结尾的空白。
* <p>
* 如果持有 {@link Trim @Trim} 注解的属性的值不是String类型,则递归遍历该属性引用的对象。
*
* @param obj
* @see String#trim()
*/
public void trim(Object obj) {
try {
this.resolve(obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void doResolve(Object obj) throws Exception {
this.resolveFields(obj);
}
@Override
public void resolveField(Object obj, Field field) throws InvocationTargetException, Illegal